/*
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
*/
$(document).ready(function() {

    $(".click-title").mouseenter( function(    e){
        e.preventDefault();
        this.style.cursor="pointer";
    });
    $(".click-title").mousedown( function(event){
        event.preventDefault();
    });

    // Ugly code while this script is shared among several pages
    try{
        refreshHitsPerSecond(true);
    } catch(e){}
    try{
        refreshResponseTimeOverTime(true);
    } catch(e){}
    try{
        refreshResponseTimePercentiles();
    } catch(e){}
    $(".portlet-header").css("cursor", "auto");
});

var percentileThreshold = 0;
var showControllersOnly = false;
var seriesFilter = "";
var filtersOnlySampleSeries = true;

// Fixes time stamps
function fixTimeStamps(series, offset){
    $.each(series, function(index, item) {
        $.each(item.data, function(index, coord) {
            coord[0] += offset;
        });
    });
}

// Check if the specified jquery object is a graph
function isGraph(object){
    return object.data('plot') !== undefined;
}

/**
 * Export graph to a PNG
 */
function exportToPNG(graphName, target) {
    var plot = $("#"+graphName).data('plot');
    var flotCanvas = plot.getCanvas();
    var image = flotCanvas.toDataURL();
    image = image.replace("image/png", "image/octet-stream");
    
    var downloadAttrSupported = ("download" in document.createElement("a"));
    if(downloadAttrSupported === true) {
        target.download = graphName + ".png";
        target.href = image;
    }
    else {
        document.location.href = image;
    }
    
}

// Override the specified graph options to fit the requirements of an overview
function prepareOverviewOptions(graphOptions){
    var overviewOptions = {
        series: {
            shadowSize: 0,
            lines: {
                lineWidth: 1
            },
            points: {
                // Show points on overview only when linked graph does not show
                // lines
                show: getProperty('series.lines.show', graphOptions) == false,
                radius : 1
            }
        },
        xaxis: {
            ticks: 2,
            axisLabel: null
        },
        yaxis: {
            ticks: 2,
            axisLabel: null
        },
        legend: {
            show: false,
            container: null
        },
        grid: {
            hoverable: false
        },
        tooltip: false
    };
    return $.extend(true, {}, graphOptions, overviewOptions);
}

// Force axes boundaries using graph extra options
function prepareOptions(options, data) {
    options.canvas = true;
    var extraOptions = data.extraOptions;
    if(extraOptions !== undefined){
        var xOffset = options.xaxis.mode === "time" ? 0 : 0;
        var yOffset = options.yaxis.mode === "time" ? 0 : 0;

        if(!isNaN(extraOptions.minX))
        	options.xaxis.min = parseFloat(extraOptions.minX) + xOffset;
        
        if(!isNaN(extraOptions.maxX))
        	options.xaxis.max = parseFloat(extraOptions.maxX) + xOffset;
        
        if(!isNaN(extraOptions.minY))
        	options.yaxis.min = parseFloat(extraOptions.minY) + yOffset;
        
        if(!isNaN(extraOptions.maxY))
        	options.yaxis.max = parseFloat(extraOptions.maxY) + yOffset;
    }
}

// Filter, mark series and sort data
function prepareSeries(data){
    var result = data.result;

    // Keep only series when needed
    if(seriesFilter && (!filtersOnlySampleSeries || result.supportsControllersDiscrimination)){
        // Insensitive case matching
        var regexp = new RegExp(seriesFilter, 'i');
        result.series = $.grep(result.series, function(series, index){
            return regexp.test(series.label);
        });
    }

    // Keep only controllers series when supported and needed
    if(result.supportsControllersDiscrimination && showControllersOnly){
        result.series = $.grep(result.series, function(series, index){
            return series.isController;
        });
    }

    // Sort data and mark series
    $.each(result.series, function(index, series) {
        series.data.sort(compareByXCoordinate);
        series.color = index;
    });
}

// Set the zoom on the specified plot object
function zoomPlot(plot, xmin, xmax, ymin, ymax){
    var axes = plot.getAxes();
    // Override axes min and max options
    $.extend(true, axes, {
        xaxis: {
            options : { min: xmin, max: xmax }
        },
        yaxis: {
            options : { min: ymin, max: ymax }
        }
    });

    // Redraw the plot
    plot.setupGrid();
    plot.draw();
}

// Prepares DOM items to add zoom function on the specified graph
function setGraphZoomable(graphSelector, overviewSelector){
    var graph = $(graphSelector);
    var overview = $(overviewSelector);

    // Ignore mouse down event
    graph.bind("mousedown", function() { return false; });
    overview.bind("mousedown", function() { return false; });

    // Zoom on selection
    graph.bind("plotselected", function (event, ranges) {
        // clamp the zooming to prevent infinite zoom
        if (ranges.xaxis.to - ranges.xaxis.from < 0.00001) {
            ranges.xaxis.to = ranges.xaxis.from + 0.00001;
        }
        if (ranges.yaxis.to - ranges.yaxis.from < 0.00001) {
            ranges.yaxis.to = ranges.yaxis.from + 0.00001;
        }

        // Do the zooming
        var plot = graph.data('plot');
        zoomPlot(plot, ranges.xaxis.from, ranges.xaxis.to, ranges.yaxis.from, ranges.yaxis.to);
        plot.clearSelection();

        // Synchronize overview selection
        overview.data('plot').setSelection(ranges, true);
    });

    // Zoom linked graph on overview selection
    overview.bind("plotselected", function (event, ranges) {
        graph.data('plot').setSelection(ranges);
    });

    // Reset linked graph zoom when reseting overview selection
    overview.bind("plotunselected", function () {
        var overviewAxes = overview.data('plot').getAxes();
        zoomPlot(graph.data('plot'), overviewAxes.xaxis.min, overviewAxes.xaxis.max, overviewAxes.yaxis.min, overviewAxes.yaxis.max);
    });
}

var responseTimePercentilesInfos = {
        data: {"result": {"minY": 3.0, "minX": 0.0, "maxY": 34232.0, "series": [{"data": [[0.0, 1956.0], [0.1, 1956.0], [0.2, 1956.0], [0.3, 1956.0], [0.4, 2519.0], [0.5, 2519.0], [0.6, 2519.0], [0.7, 4084.0], [0.8, 4084.0], [0.9, 4084.0], [1.0, 4085.0], [1.1, 4085.0], [1.2, 4085.0], [1.3, 4085.0], [1.4, 4088.0], [1.5, 4088.0], [1.6, 4088.0], [1.7, 4297.0], [1.8, 4297.0], [1.9, 4297.0], [2.0, 4766.0], [2.1, 4766.0], [2.2, 4766.0], [2.3, 4768.0], [2.4, 4768.0], [2.5, 4768.0], [2.6, 4768.0], [2.7, 4811.0], [2.8, 4811.0], [2.9, 4811.0], [3.0, 4837.0], [3.1, 4837.0], [3.2, 4837.0], [3.3, 5884.0], [3.4, 5884.0], [3.5, 5884.0], [3.6, 5885.0], [3.7, 5885.0], [3.8, 5885.0], [3.9, 5885.0], [4.0, 6132.0], [4.1, 6132.0], [4.2, 6132.0], [4.3, 6150.0], [4.4, 6150.0], [4.5, 6150.0], [4.6, 6153.0], [4.7, 6153.0], [4.8, 6153.0], [4.9, 6153.0], [5.0, 6157.0], [5.1, 6157.0], [5.2, 6157.0], [5.3, 6158.0], [5.4, 6158.0], [5.5, 6158.0], [5.6, 6162.0], [5.7, 6162.0], [5.8, 6162.0], [5.9, 6353.0], [6.0, 6353.0], [6.1, 6353.0], [6.2, 6353.0], [6.3, 6405.0], [6.4, 6405.0], [6.5, 6405.0], [6.6, 6440.0], [6.7, 6440.0], [6.8, 6440.0], [6.9, 6441.0], [7.0, 6441.0], [7.1, 6441.0], [7.2, 6449.0], [7.3, 6449.0], [7.4, 6449.0], [7.5, 6449.0], [7.6, 6450.0], [7.7, 6450.0], [7.8, 6450.0], [7.9, 6451.0], [8.0, 6451.0], [8.1, 6451.0], [8.2, 6453.0], [8.3, 6453.0], [8.4, 6453.0], [8.5, 6603.0], [8.6, 6603.0], [8.7, 6603.0], [8.8, 6603.0], [8.9, 6604.0], [9.0, 6604.0], [9.1, 6604.0], [9.2, 6623.0], [9.3, 6623.0], [9.4, 6623.0], [9.5, 6645.0], [9.6, 6645.0], [9.7, 6645.0], [9.8, 6645.0], [9.9, 6688.0], [10.0, 6688.0], [10.1, 6688.0], [10.2, 6689.0], [10.3, 6689.0], [10.4, 6689.0], [10.5, 6689.0], [10.6, 6689.0], [10.7, 6689.0], [10.8, 6783.0], [10.9, 6783.0], [11.0, 6783.0], [11.1, 6783.0], [11.2, 6797.0], [11.3, 6797.0], [11.4, 6797.0], [11.5, 6956.0], [11.6, 6956.0], [11.7, 6956.0], [11.8, 6956.0], [11.9, 6956.0], [12.0, 6956.0], [12.1, 6956.0], [12.2, 6956.0], [12.3, 6956.0], [12.4, 6956.0], [12.5, 6980.0], [12.6, 6980.0], [12.7, 6980.0], [12.8, 6981.0], [12.9, 6981.0], [13.0, 6981.0], [13.1, 6982.0], [13.2, 6982.0], [13.3, 6982.0], [13.4, 6986.0], [13.5, 6986.0], [13.6, 6986.0], [13.7, 6986.0], [13.8, 6991.0], [13.9, 6991.0], [14.0, 6991.0], [14.1, 7083.0], [14.2, 7083.0], [14.3, 7083.0], [14.4, 7092.0], [14.5, 7092.0], [14.6, 7092.0], [14.7, 7092.0], [14.8, 7093.0], [14.9, 7093.0], [15.0, 7093.0], [15.1, 7095.0], [15.2, 7095.0], [15.3, 7095.0], [15.4, 7095.0], [15.5, 7095.0], [15.6, 7095.0], [15.7, 7103.0], [15.8, 7103.0], [15.9, 7103.0], [16.0, 7103.0], [16.1, 7135.0], [16.2, 7135.0], [16.3, 7135.0], [16.4, 7136.0], [16.5, 7136.0], [16.6, 7136.0], [16.7, 7172.0], [16.8, 7172.0], [16.9, 7172.0], [17.0, 7175.0], [17.1, 7175.0], [17.2, 7175.0], [17.3, 7175.0], [17.4, 7198.0], [17.5, 7198.0], [17.6, 7198.0], [17.7, 7293.0], [17.8, 7293.0], [17.9, 7293.0], [18.0, 7294.0], [18.1, 7294.0], [18.2, 7294.0], [18.3, 7294.0], [18.4, 7547.0], [18.5, 7547.0], [18.6, 7547.0], [18.7, 7673.0], [18.8, 7673.0], [18.9, 7673.0], [19.0, 7674.0], [19.1, 7674.0], [19.2, 7674.0], [19.3, 7720.0], [19.4, 7720.0], [19.5, 7720.0], [19.6, 7720.0], [19.7, 7874.0], [19.8, 7874.0], [19.9, 7874.0], [20.0, 7886.0], [20.1, 7886.0], [20.2, 7886.0], [20.3, 7968.0], [20.4, 7968.0], [20.5, 7968.0], [20.6, 8066.0], [20.7, 8066.0], [20.8, 8066.0], [20.9, 8066.0], [21.0, 8071.0], [21.1, 8071.0], [21.2, 8071.0], [21.3, 8071.0], [21.4, 8071.0], [21.5, 8071.0], [21.6, 8079.0], [21.7, 8079.0], [21.8, 8079.0], [21.9, 8132.0], [22.0, 8132.0], [22.1, 8132.0], [22.2, 8132.0], [22.3, 8188.0], [22.4, 8188.0], [22.5, 8188.0], [22.6, 8192.0], [22.7, 8192.0], [22.8, 8192.0], [22.9, 8390.0], [23.0, 8390.0], [23.1, 8390.0], [23.2, 8390.0], [23.3, 8391.0], [23.4, 8391.0], [23.5, 8391.0], [23.6, 8404.0], [23.7, 8404.0], [23.8, 8404.0], [23.9, 8411.0], [24.0, 8411.0], [24.1, 8411.0], [24.2, 8411.0], [24.3, 8411.0], [24.4, 8411.0], [24.5, 8411.0], [24.6, 8473.0], [24.7, 8473.0], [24.8, 8473.0], [24.9, 8483.0], [25.0, 8483.0], [25.1, 8483.0], [25.2, 8574.0], [25.3, 8574.0], [25.4, 8574.0], [25.5, 8594.0], [25.6, 8594.0], [25.7, 8594.0], [25.8, 8594.0], [25.9, 8728.0], [26.0, 8728.0], [26.1, 8728.0], [26.2, 8728.0], [26.3, 8728.0], [26.4, 8728.0], [26.5, 8787.0], [26.6, 8787.0], [26.7, 8787.0], [26.8, 8792.0], [26.9, 8792.0], [27.0, 8792.0], [27.1, 8792.0], [27.2, 8796.0], [27.3, 8796.0], [27.4, 8796.0], [27.5, 8811.0], [27.6, 8811.0], [27.7, 8811.0], [27.8, 8981.0], [27.9, 8981.0], [28.0, 8981.0], [28.1, 8981.0], [28.2, 8984.0], [28.3, 8984.0], [28.4, 8984.0], [28.5, 8987.0], [28.6, 8987.0], [28.7, 8987.0], [28.8, 9000.0], [28.9, 9000.0], [29.0, 9000.0], [29.1, 9082.0], [29.2, 9082.0], [29.3, 9082.0], [29.4, 9082.0], [29.5, 9083.0], [29.6, 9083.0], [29.7, 9083.0], [29.8, 9094.0], [29.9, 9094.0], [30.0, 9094.0], [30.1, 9197.0], [30.2, 9197.0], [30.3, 9197.0], [30.4, 9197.0], [30.5, 9197.0], [30.6, 9197.0], [30.7, 9197.0], [30.8, 9204.0], [30.9, 9204.0], [31.0, 9204.0], [31.1, 9230.0], [31.2, 9230.0], [31.3, 9230.0], [31.4, 9376.0], [31.5, 9376.0], [31.6, 9376.0], [31.7, 9377.0], [31.8, 9377.0], [31.9, 9377.0], [32.0, 9377.0], [32.1, 9399.0], [32.2, 9399.0], [32.3, 9399.0], [32.4, 9400.0], [32.5, 9400.0], [32.6, 9400.0], [32.7, 9417.0], [32.8, 9417.0], [32.9, 9417.0], [33.0, 9417.0], [33.1, 9420.0], [33.2, 9420.0], [33.3, 9420.0], [33.4, 9493.0], [33.5, 9493.0], [33.6, 9493.0], [33.7, 9507.0], [33.8, 9507.0], [33.9, 9507.0], [34.0, 9507.0], [34.1, 9507.0], [34.2, 9507.0], [34.3, 9507.0], [34.4, 9512.0], [34.5, 9512.0], [34.6, 9512.0], [34.7, 9524.0], [34.8, 9524.0], [34.9, 9524.0], [35.0, 9541.0], [35.1, 9541.0], [35.2, 9541.0], [35.3, 9905.0], [35.4, 9905.0], [35.5, 9905.0], [35.6, 9905.0], [35.7, 9944.0], [35.8, 9944.0], [35.9, 9944.0], [36.0, 10404.0], [36.1, 10404.0], [36.2, 10404.0], [36.3, 10404.0], [36.4, 10404.0], [36.5, 10404.0], [36.6, 10404.0], [36.7, 10527.0], [36.8, 10527.0], [36.9, 10527.0], [37.0, 10536.0], [37.1, 10536.0], [37.2, 10536.0], [37.3, 10568.0], [37.4, 10568.0], [37.5, 10568.0], [37.6, 10568.0], [37.7, 10568.0], [37.8, 10568.0], [37.9, 10568.0], [38.0, 10569.0], [38.1, 10569.0], [38.2, 10569.0], [38.3, 10813.0], [38.4, 10813.0], [38.5, 10813.0], [38.6, 11133.0], [38.7, 11133.0], [38.8, 11133.0], [38.9, 11156.0], [39.0, 11156.0], [39.1, 11156.0], [39.2, 11156.0], [39.3, 11161.0], [39.4, 11161.0], [39.5, 11161.0], [39.6, 11170.0], [39.7, 11170.0], [39.8, 11170.0], [39.9, 11170.0], [40.0, 11170.0], [40.1, 11170.0], [40.2, 11182.0], [40.3, 11182.0], [40.4, 11182.0], [40.5, 11182.0], [40.6, 11331.0], [40.7, 11331.0], [40.8, 11331.0], [40.9, 11332.0], [41.0, 11332.0], [41.1, 11332.0], [41.2, 11345.0], [41.3, 11345.0], [41.4, 11345.0], [41.5, 11345.0], [41.6, 11350.0], [41.7, 11350.0], [41.8, 11350.0], [41.9, 11513.0], [42.0, 11513.0], [42.1, 11513.0], [42.2, 11518.0], [42.3, 11518.0], [42.4, 11518.0], [42.5, 11522.0], [42.6, 11522.0], [42.7, 11522.0], [42.8, 11522.0], [42.9, 11529.0], [43.0, 11529.0], [43.1, 11529.0], [43.2, 11539.0], [43.3, 11539.0], [43.4, 11539.0], [43.5, 11548.0], [43.6, 11548.0], [43.7, 11548.0], [43.8, 11552.0], [43.9, 11552.0], [44.0, 11552.0], [44.1, 11552.0], [44.2, 11559.0], [44.3, 11559.0], [44.4, 11559.0], [44.5, 11559.0], [44.6, 11559.0], [44.7, 11559.0], [44.8, 11561.0], [44.9, 11561.0], [45.0, 11561.0], [45.1, 11567.0], [45.2, 11567.0], [45.3, 11567.0], [45.4, 11567.0], [45.5, 11567.0], [45.6, 11567.0], [45.7, 11567.0], [45.8, 11569.0], [45.9, 11569.0], [46.0, 11569.0], [46.1, 11739.0], [46.2, 11739.0], [46.3, 11739.0], [46.4, 11739.0], [46.5, 11750.0], [46.6, 11750.0], [46.7, 11750.0], [46.8, 11904.0], [46.9, 11904.0], [47.0, 11904.0], [47.1, 12469.0], [47.2, 12469.0], [47.3, 12469.0], [47.4, 12470.0], [47.5, 12470.0], [47.6, 12470.0], [47.7, 12470.0], [47.8, 12470.0], [47.9, 12470.0], [48.0, 12470.0], [48.1, 12470.0], [48.2, 12470.0], [48.3, 12470.0], [48.4, 12472.0], [48.5, 12472.0], [48.6, 12472.0], [48.7, 13008.0], [48.8, 13008.0], [48.9, 13008.0], [49.0, 13008.0], [49.1, 13014.0], [49.2, 13014.0], [49.3, 13014.0], [49.4, 14077.0], [49.5, 14077.0], [49.6, 14077.0], [49.7, 14077.0], [49.8, 14077.0], [49.9, 14077.0], [50.0, 14091.0], [50.1, 14091.0], [50.2, 14091.0], [50.3, 14091.0], [50.4, 14253.0], [50.5, 14253.0], [50.6, 14253.0], [50.7, 14258.0], [50.8, 14258.0], [50.9, 14258.0], [51.0, 14468.0], [51.1, 14468.0], [51.2, 14468.0], [51.3, 14468.0], [51.4, 14475.0], [51.5, 14475.0], [51.6, 14475.0], [51.7, 14476.0], [51.8, 14476.0], [51.9, 14476.0], [52.0, 15107.0], [52.1, 15107.0], [52.2, 15107.0], [52.3, 15107.0], [52.4, 15107.0], [52.5, 15107.0], [52.6, 15107.0], [52.7, 15108.0], [52.8, 15108.0], [52.9, 15108.0], [53.0, 15117.0], [53.1, 15117.0], [53.2, 15117.0], [53.3, 15120.0], [53.4, 15120.0], [53.5, 15120.0], [53.6, 15615.0], [53.7, 15615.0], [53.8, 15615.0], [53.9, 15615.0], [54.0, 15618.0], [54.1, 15618.0], [54.2, 15618.0], [54.3, 15638.0], [54.4, 15638.0], [54.5, 15638.0], [54.6, 15729.0], [54.7, 15729.0], [54.8, 15729.0], [54.9, 15729.0], [55.0, 15734.0], [55.1, 15734.0], [55.2, 15734.0], [55.3, 15737.0], [55.4, 15737.0], [55.5, 15737.0], [55.6, 15742.0], [55.7, 15742.0], [55.8, 15742.0], [55.9, 15760.0], [56.0, 15760.0], [56.1, 15760.0], [56.2, 15760.0], [56.3, 15915.0], [56.4, 15915.0], [56.5, 15915.0], [56.6, 16118.0], [56.7, 16118.0], [56.8, 16118.0], [56.9, 16128.0], [57.0, 16128.0], [57.1, 16128.0], [57.2, 16139.0], [57.3, 16139.0], [57.4, 16139.0], [57.5, 16139.0], [57.6, 16140.0], [57.7, 16140.0], [57.8, 16140.0], [57.9, 16353.0], [58.0, 16353.0], [58.1, 16353.0], [58.2, 16363.0], [58.3, 16363.0], [58.4, 16363.0], [58.5, 16366.0], [58.6, 16366.0], [58.7, 16366.0], [58.8, 16366.0], [58.9, 16367.0], [59.0, 16367.0], [59.1, 16367.0], [59.2, 16371.0], [59.3, 16371.0], [59.4, 16371.0], [59.5, 16371.0], [59.6, 16371.0], [59.7, 16371.0], [59.8, 16371.0], [59.9, 16372.0], [60.0, 16372.0], [60.1, 16372.0], [60.2, 16381.0], [60.3, 16381.0], [60.4, 16381.0], [60.5, 17186.0], [60.6, 17186.0], [60.7, 17186.0], [60.8, 17187.0], [60.9, 17187.0], [61.0, 17187.0], [61.1, 17187.0], [61.2, 18243.0], [61.3, 18243.0], [61.4, 18243.0], [61.5, 18245.0], [61.6, 18245.0], [61.7, 18245.0], [61.8, 18248.0], [61.9, 18248.0], [62.0, 18248.0], [62.1, 18249.0], [62.2, 18249.0], [62.3, 18249.0], [62.4, 18249.0], [62.5, 20352.0], [62.6, 20352.0], [62.7, 20352.0], [62.8, 20354.0], [62.9, 20354.0], [63.0, 20354.0], [63.1, 20359.0], [63.2, 20359.0], [63.3, 20359.0], [63.4, 21436.0], [63.5, 21436.0], [63.6, 21436.0], [63.7, 21436.0], [63.8, 21441.0], [63.9, 21441.0], [64.0, 21441.0], [64.1, 21442.0], [64.2, 21442.0], [64.3, 21442.0], [64.4, 22512.0], [64.5, 22512.0], [64.6, 22512.0], [64.7, 22512.0], [64.8, 22519.0], [64.9, 22519.0], [65.0, 22519.0], [65.1, 22524.0], [65.2, 22524.0], [65.3, 22524.0], [65.4, 23603.0], [65.5, 23603.0], [65.6, 23603.0], [65.7, 23612.0], [65.8, 23612.0], [65.9, 23612.0], [66.0, 23612.0], [66.1, 23621.0], [66.2, 23621.0], [66.3, 23621.0], [66.4, 24659.0], [66.5, 24659.0], [66.6, 24659.0], [66.7, 24662.0], [66.8, 24662.0], [66.9, 24662.0], [67.0, 25674.0], [67.1, 25674.0], [67.2, 25674.0], [67.3, 25674.0], [67.4, 25685.0], [67.5, 25685.0], [67.6, 25685.0], [67.7, 25695.0], [67.8, 25695.0], [67.9, 25695.0], [68.0, 26697.0], [68.1, 26697.0], [68.2, 26697.0], [68.3, 26697.0], [68.4, 26708.0], [68.5, 26708.0], [68.6, 26708.0], [68.7, 26716.0], [68.8, 26716.0], [68.9, 26716.0], [69.0, 26727.0], [69.1, 26727.0], [69.2, 26727.0], [69.3, 26736.0], [69.4, 26736.0], [69.5, 26736.0], [69.6, 26736.0], [69.7, 27831.0], [69.8, 27831.0], [69.9, 27831.0], [70.0, 29039.0], [70.1, 29039.0], [70.2, 29039.0], [70.3, 31186.0], [70.4, 31186.0], [70.5, 31186.0], [70.6, 31202.0], [70.7, 31202.0], [70.8, 31202.0], [70.9, 31202.0], [71.0, 31205.0], [71.1, 31205.0], [71.2, 31205.0], [71.3, 31217.0], [71.4, 31217.0], [71.5, 31217.0], [71.6, 31221.0], [71.7, 31221.0], [71.8, 31221.0], [71.9, 32196.0], [72.0, 32196.0], [72.1, 32196.0], [72.2, 32196.0], [72.3, 32201.0], [72.4, 32201.0], [72.5, 32201.0], [72.6, 32214.0], [72.7, 32214.0], [72.8, 32214.0], [72.9, 33015.0], [73.0, 33015.0], [73.1, 33015.0], [73.2, 33015.0], [73.3, 33035.0], [73.4, 33035.0], [73.5, 33035.0], [73.6, 33040.0], [73.7, 33040.0], [73.8, 33040.0], [73.9, 33735.0], [74.0, 33735.0], [74.1, 33735.0], [74.2, 33743.0], [74.3, 33743.0], [74.4, 33743.0], [74.5, 33743.0], [74.6, 33842.0], [74.7, 33842.0], [74.8, 33842.0], [74.9, 33868.0], [75.0, 33868.0], [75.1, 33868.0], [75.2, 33887.0], [75.3, 33887.0], [75.4, 33887.0], [75.5, 33907.0], [75.6, 33907.0], [75.7, 33907.0], [75.8, 33907.0], [75.9, 33933.0], [76.0, 33933.0], [76.1, 33933.0], [76.2, 33951.0], [76.3, 33951.0], [76.4, 33951.0], [76.5, 33966.0], [76.6, 33966.0], [76.7, 33966.0], [76.8, 33979.0], [76.9, 33979.0], [77.0, 33979.0], [77.1, 33979.0], [77.2, 33985.0], [77.3, 33985.0], [77.4, 33985.0], [77.5, 34001.0], [77.6, 34001.0], [77.7, 34001.0], [77.8, 34002.0], [77.9, 34002.0], [78.0, 34002.0], [78.1, 34002.0], [78.2, 34003.0], [78.3, 34003.0], [78.4, 34003.0], [78.5, 34009.0], [78.6, 34009.0], [78.7, 34009.0], [78.8, 34025.0], [78.9, 34025.0], [79.0, 34025.0], [79.1, 34027.0], [79.2, 34027.0], [79.3, 34027.0], [79.4, 34027.0], [79.5, 34031.0], [79.6, 34031.0], [79.7, 34031.0], [79.8, 34034.0], [79.9, 34034.0], [80.0, 34034.0], [80.1, 34034.0], [80.2, 34034.0], [80.3, 34034.0], [80.4, 34035.0], [80.5, 34035.0], [80.6, 34035.0], [80.7, 34035.0], [80.8, 34039.0], [80.9, 34039.0], [81.0, 34039.0], [81.1, 34041.0], [81.2, 34041.0], [81.3, 34041.0], [81.4, 34041.0], [81.5, 34041.0], [81.6, 34041.0], [81.7, 34050.0], [81.8, 34050.0], [81.9, 34050.0], [82.0, 34050.0], [82.1, 34063.0], [82.2, 34063.0], [82.3, 34063.0], [82.4, 34064.0], [82.5, 34064.0], [82.6, 34064.0], [82.7, 34067.0], [82.8, 34067.0], [82.9, 34067.0], [83.0, 34067.0], [83.1, 34067.0], [83.2, 34067.0], [83.3, 34067.0], [83.4, 34069.0], [83.5, 34069.0], [83.6, 34069.0], [83.7, 34079.0], [83.8, 34079.0], [83.9, 34079.0], [84.0, 34086.0], [84.1, 34086.0], [84.2, 34086.0], [84.3, 34086.0], [84.4, 34107.0], [84.5, 34107.0], [84.6, 34107.0], [84.7, 34109.0], [84.8, 34109.0], [84.9, 34109.0], [85.0, 34109.0], [85.1, 34109.0], [85.2, 34109.0], [85.3, 34112.0], [85.4, 34112.0], [85.5, 34112.0], [85.6, 34112.0], [85.7, 34122.0], [85.8, 34122.0], [85.9, 34122.0], [86.0, 34122.0], [86.1, 34122.0], [86.2, 34122.0], [86.3, 34130.0], [86.4, 34130.0], [86.5, 34130.0], [86.6, 34130.0], [86.7, 34136.0], [86.8, 34136.0], [86.9, 34136.0], [87.0, 34136.0], [87.1, 34136.0], [87.2, 34136.0], [87.3, 34140.0], [87.4, 34140.0], [87.5, 34140.0], [87.6, 34140.0], [87.7, 34140.0], [87.8, 34140.0], [87.9, 34140.0], [88.0, 34143.0], [88.1, 34143.0], [88.2, 34143.0], [88.3, 34145.0], [88.4, 34145.0], [88.5, 34145.0], [88.6, 34147.0], [88.7, 34147.0], [88.8, 34147.0], [88.9, 34151.0], [89.0, 34151.0], [89.1, 34151.0], [89.2, 34151.0], [89.3, 34152.0], [89.4, 34152.0], [89.5, 34152.0], [89.6, 34154.0], [89.7, 34154.0], [89.8, 34154.0], [89.9, 34157.0], [90.0, 34157.0], [90.1, 34157.0], [90.2, 34158.0], [90.3, 34158.0], [90.4, 34158.0], [90.5, 34158.0], [90.6, 34160.0], [90.7, 34160.0], [90.8, 34160.0], [90.9, 34173.0], [91.0, 34173.0], [91.1, 34173.0], [91.2, 34174.0], [91.3, 34174.0], [91.4, 34174.0], [91.5, 34174.0], [91.6, 34175.0], [91.7, 34175.0], [91.8, 34175.0], [91.9, 34176.0], [92.0, 34176.0], [92.1, 34176.0], [92.2, 34177.0], [92.3, 34177.0], [92.4, 34177.0], [92.5, 34186.0], [92.6, 34186.0], [92.7, 34186.0], [92.8, 34186.0], [92.9, 34186.0], [93.0, 34186.0], [93.1, 34186.0], [93.2, 34189.0], [93.3, 34189.0], [93.4, 34189.0], [93.5, 34191.0], [93.6, 34191.0], [93.7, 34191.0], [93.8, 34196.0], [93.9, 34196.0], [94.0, 34196.0], [94.1, 34196.0], [94.2, 34199.0], [94.3, 34199.0], [94.4, 34199.0], [94.5, 34201.0], [94.6, 34201.0], [94.7, 34201.0], [94.8, 34201.0], [94.9, 34201.0], [95.0, 34201.0], [95.1, 34202.0], [95.2, 34202.0], [95.3, 34202.0], [95.4, 34202.0], [95.5, 34204.0], [95.6, 34204.0], [95.7, 34204.0], [95.8, 34205.0], [95.9, 34205.0], [96.0, 34205.0], [96.1, 34207.0], [96.2, 34207.0], [96.3, 34207.0], [96.4, 34207.0], [96.5, 34208.0], [96.6, 34208.0], [96.7, 34208.0], [96.8, 34209.0], [96.9, 34209.0], [97.0, 34209.0], [97.1, 34213.0], [97.2, 34213.0], [97.3, 34213.0], [97.4, 34213.0], [97.5, 34213.0], [97.6, 34213.0], [97.7, 34213.0], [97.8, 34214.0], [97.9, 34214.0], [98.0, 34214.0], [98.1, 34220.0], [98.2, 34220.0], [98.3, 34220.0], [98.4, 34220.0], [98.5, 34220.0], [98.6, 34220.0], [98.7, 34220.0], [98.8, 34220.0], [98.9, 34220.0], [99.0, 34220.0], [99.1, 34220.0], [99.2, 34220.0], [99.3, 34220.0], [99.4, 34221.0], [99.5, 34221.0], [99.6, 34221.0], [99.7, 34232.0], [99.8, 34232.0], [99.9, 34232.0], [100.0, 34232.0]], "isOverall": false, "label": "signin", "isController": false}, {"data": [[0.0, 6.0], [0.1, 7.0], [0.2, 7.0], [0.3, 7.0], [0.4, 7.0], [0.5, 7.0], [0.6, 7.0], [0.7, 7.0], [0.8, 7.0], [0.9, 7.0], [1.0, 8.0], [1.1, 8.0], [1.2, 8.0], [1.3, 8.0], [1.4, 8.0], [1.5, 8.0], [1.6, 8.0], [1.7, 8.0], [1.8, 8.0], [1.9, 8.0], [2.0, 8.0], [2.1, 8.0], [2.2, 8.0], [2.3, 8.0], [2.4, 8.0], [2.5, 8.0], [2.6, 8.0], [2.7, 8.0], [2.8, 8.0], [2.9, 8.0], [3.0, 8.0], [3.1, 8.0], [3.2, 9.0], [3.3, 9.0], [3.4, 9.0], [3.5, 9.0], [3.6, 9.0], [3.7, 9.0], [3.8, 9.0], [3.9, 9.0], [4.0, 9.0], [4.1, 9.0], [4.2, 9.0], [4.3, 9.0], [4.4, 9.0], [4.5, 9.0], [4.6, 9.0], [4.7, 9.0], [4.8, 9.0], [4.9, 9.0], [5.0, 9.0], [5.1, 9.0], [5.2, 9.0], [5.3, 9.0], [5.4, 9.0], [5.5, 9.0], [5.6, 9.0], [5.7, 9.0], [5.8, 10.0], [5.9, 10.0], [6.0, 10.0], [6.1, 10.0], [6.2, 10.0], [6.3, 10.0], [6.4, 10.0], [6.5, 10.0], [6.6, 10.0], [6.7, 10.0], [6.8, 10.0], [6.9, 10.0], [7.0, 10.0], [7.1, 10.0], [7.2, 10.0], [7.3, 10.0], [7.4, 10.0], [7.5, 11.0], [7.6, 11.0], [7.7, 11.0], [7.8, 11.0], [7.9, 11.0], [8.0, 11.0], [8.1, 11.0], [8.2, 11.0], [8.3, 11.0], [8.4, 11.0], [8.5, 11.0], [8.6, 11.0], [8.7, 11.0], [8.8, 11.0], [8.9, 12.0], [9.0, 12.0], [9.1, 12.0], [9.2, 12.0], [9.3, 12.0], [9.4, 12.0], [9.5, 12.0], [9.6, 12.0], [9.7, 12.0], [9.8, 12.0], [9.9, 12.0], [10.0, 12.0], [10.1, 12.0], [10.2, 12.0], [10.3, 12.0], [10.4, 12.0], [10.5, 13.0], [10.6, 13.0], [10.7, 13.0], [10.8, 13.0], [10.9, 13.0], [11.0, 13.0], [11.1, 13.0], [11.2, 13.0], [11.3, 13.0], [11.4, 13.0], [11.5, 13.0], [11.6, 13.0], [11.7, 13.0], [11.8, 13.0], [11.9, 13.0], [12.0, 13.0], [12.1, 14.0], [12.2, 14.0], [12.3, 14.0], [12.4, 14.0], [12.5, 14.0], [12.6, 14.0], [12.7, 14.0], [12.8, 14.0], [12.9, 14.0], [13.0, 14.0], [13.1, 14.0], [13.2, 14.0], [13.3, 14.0], [13.4, 14.0], [13.5, 14.0], [13.6, 14.0], [13.7, 15.0], [13.8, 15.0], [13.9, 15.0], [14.0, 15.0], [14.1, 15.0], [14.2, 15.0], [14.3, 15.0], [14.4, 15.0], [14.5, 15.0], [14.6, 15.0], [14.7, 15.0], [14.8, 15.0], [14.9, 15.0], [15.0, 15.0], [15.1, 15.0], [15.2, 15.0], [15.3, 15.0], [15.4, 16.0], [15.5, 16.0], [15.6, 16.0], [15.7, 16.0], [15.8, 16.0], [15.9, 16.0], [16.0, 16.0], [16.1, 16.0], [16.2, 16.0], [16.3, 16.0], [16.4, 16.0], [16.5, 16.0], [16.6, 16.0], [16.7, 16.0], [16.8, 16.0], [16.9, 16.0], [17.0, 17.0], [17.1, 17.0], [17.2, 17.0], [17.3, 17.0], [17.4, 17.0], [17.5, 17.0], [17.6, 17.0], [17.7, 17.0], [17.8, 17.0], [17.9, 17.0], [18.0, 17.0], [18.1, 17.0], [18.2, 17.0], [18.3, 17.0], [18.4, 17.0], [18.5, 17.0], [18.6, 18.0], [18.7, 18.0], [18.8, 18.0], [18.9, 18.0], [19.0, 18.0], [19.1, 18.0], [19.2, 18.0], [19.3, 18.0], [19.4, 18.0], [19.5, 18.0], [19.6, 18.0], [19.7, 18.0], [19.8, 18.0], [19.9, 18.0], [20.0, 18.0], [20.1, 18.0], [20.2, 18.0], [20.3, 18.0], [20.4, 18.0], [20.5, 18.0], [20.6, 18.0], [20.7, 18.0], [20.8, 19.0], [20.9, 19.0], [21.0, 19.0], [21.1, 19.0], [21.2, 19.0], [21.3, 19.0], [21.4, 19.0], [21.5, 19.0], [21.6, 19.0], [21.7, 19.0], [21.8, 19.0], [21.9, 19.0], [22.0, 19.0], [22.1, 19.0], [22.2, 19.0], [22.3, 19.0], [22.4, 19.0], [22.5, 20.0], [22.6, 20.0], [22.7, 20.0], [22.8, 20.0], [22.9, 20.0], [23.0, 20.0], [23.1, 20.0], [23.2, 20.0], [23.3, 20.0], [23.4, 20.0], [23.5, 20.0], [23.6, 21.0], [23.7, 21.0], [23.8, 21.0], [23.9, 21.0], [24.0, 21.0], [24.1, 21.0], [24.2, 21.0], [24.3, 21.0], [24.4, 21.0], [24.5, 21.0], [24.6, 21.0], [24.7, 21.0], [24.8, 21.0], [24.9, 22.0], [25.0, 22.0], [25.1, 22.0], [25.2, 22.0], [25.3, 22.0], [25.4, 22.0], [25.5, 22.0], [25.6, 22.0], [25.7, 22.0], [25.8, 22.0], [25.9, 23.0], [26.0, 23.0], [26.1, 23.0], [26.2, 23.0], [26.3, 23.0], [26.4, 23.0], [26.5, 23.0], [26.6, 23.0], [26.7, 23.0], [26.8, 23.0], [26.9, 23.0], [27.0, 23.0], [27.1, 23.0], [27.2, 23.0], [27.3, 23.0], [27.4, 23.0], [27.5, 23.0], [27.6, 24.0], [27.7, 24.0], [27.8, 24.0], [27.9, 24.0], [28.0, 24.0], [28.1, 24.0], [28.2, 24.0], [28.3, 24.0], [28.4, 24.0], [28.5, 24.0], [28.6, 25.0], [28.7, 25.0], [28.8, 25.0], [28.9, 25.0], [29.0, 25.0], [29.1, 25.0], [29.2, 25.0], [29.3, 25.0], [29.4, 25.0], [29.5, 26.0], [29.6, 26.0], [29.7, 26.0], [29.8, 26.0], [29.9, 26.0], [30.0, 26.0], [30.1, 26.0], [30.2, 26.0], [30.3, 26.0], [30.4, 26.0], [30.5, 26.0], [30.6, 26.0], [30.7, 26.0], [30.8, 26.0], [30.9, 27.0], [31.0, 27.0], [31.1, 27.0], [31.2, 27.0], [31.3, 27.0], [31.4, 27.0], [31.5, 27.0], [31.6, 27.0], [31.7, 27.0], [31.8, 27.0], [31.9, 27.0], [32.0, 27.0], [32.1, 28.0], [32.2, 28.0], [32.3, 28.0], [32.4, 28.0], [32.5, 28.0], [32.6, 28.0], [32.7, 28.0], [32.8, 28.0], [32.9, 28.0], [33.0, 28.0], [33.1, 28.0], [33.2, 28.0], [33.3, 28.0], [33.4, 28.0], [33.5, 28.0], [33.6, 28.0], [33.7, 28.0], [33.8, 28.0], [33.9, 29.0], [34.0, 29.0], [34.1, 29.0], [34.2, 29.0], [34.3, 29.0], [34.4, 29.0], [34.5, 29.0], [34.6, 29.0], [34.7, 29.0], [34.8, 29.0], [34.9, 29.0], [35.0, 29.0], [35.1, 29.0], [35.2, 30.0], [35.3, 30.0], [35.4, 30.0], [35.5, 30.0], [35.6, 30.0], [35.7, 30.0], [35.8, 30.0], [35.9, 30.0], [36.0, 30.0], [36.1, 30.0], [36.2, 30.0], [36.3, 30.0], [36.4, 31.0], [36.5, 31.0], [36.6, 31.0], [36.7, 31.0], [36.8, 31.0], [36.9, 31.0], [37.0, 31.0], [37.1, 31.0], [37.2, 31.0], [37.3, 31.0], [37.4, 31.0], [37.5, 31.0], [37.6, 31.0], [37.7, 31.0], [37.8, 31.0], [37.9, 32.0], [38.0, 32.0], [38.1, 32.0], [38.2, 32.0], [38.3, 32.0], [38.4, 32.0], [38.5, 32.0], [38.6, 32.0], [38.7, 32.0], [38.8, 32.0], [38.9, 32.0], [39.0, 33.0], [39.1, 33.0], [39.2, 33.0], [39.3, 33.0], [39.4, 33.0], [39.5, 33.0], [39.6, 33.0], [39.7, 33.0], [39.8, 33.0], [39.9, 33.0], [40.0, 34.0], [40.1, 34.0], [40.2, 34.0], [40.3, 34.0], [40.4, 34.0], [40.5, 34.0], [40.6, 34.0], [40.7, 34.0], [40.8, 34.0], [40.9, 34.0], [41.0, 35.0], [41.1, 35.0], [41.2, 35.0], [41.3, 35.0], [41.4, 35.0], [41.5, 35.0], [41.6, 35.0], [41.7, 35.0], [41.8, 35.0], [41.9, 35.0], [42.0, 36.0], [42.1, 36.0], [42.2, 36.0], [42.3, 36.0], [42.4, 36.0], [42.5, 36.0], [42.6, 36.0], [42.7, 36.0], [42.8, 36.0], [42.9, 36.0], [43.0, 36.0], [43.1, 37.0], [43.2, 37.0], [43.3, 37.0], [43.4, 37.0], [43.5, 37.0], [43.6, 37.0], [43.7, 37.0], [43.8, 37.0], [43.9, 38.0], [44.0, 38.0], [44.1, 38.0], [44.2, 38.0], [44.3, 38.0], [44.4, 38.0], [44.5, 38.0], [44.6, 38.0], [44.7, 38.0], [44.8, 38.0], [44.9, 38.0], [45.0, 38.0], [45.1, 39.0], [45.2, 39.0], [45.3, 39.0], [45.4, 39.0], [45.5, 39.0], [45.6, 39.0], [45.7, 39.0], [45.8, 39.0], [45.9, 39.0], [46.0, 39.0], [46.1, 39.0], [46.2, 40.0], [46.3, 40.0], [46.4, 40.0], [46.5, 40.0], [46.6, 40.0], [46.7, 40.0], [46.8, 40.0], [46.9, 40.0], [47.0, 40.0], [47.1, 40.0], [47.2, 40.0], [47.3, 41.0], [47.4, 41.0], [47.5, 41.0], [47.6, 41.0], [47.7, 41.0], [47.8, 41.0], [47.9, 41.0], [48.0, 41.0], [48.1, 41.0], [48.2, 41.0], [48.3, 41.0], [48.4, 41.0], [48.5, 42.0], [48.6, 42.0], [48.7, 42.0], [48.8, 42.0], [48.9, 42.0], [49.0, 42.0], [49.1, 42.0], [49.2, 42.0], [49.3, 42.0], [49.4, 42.0], [49.5, 42.0], [49.6, 43.0], [49.7, 43.0], [49.8, 43.0], [49.9, 43.0], [50.0, 43.0], [50.1, 43.0], [50.2, 43.0], [50.3, 43.0], [50.4, 43.0], [50.5, 43.0], [50.6, 44.0], [50.7, 44.0], [50.8, 44.0], [50.9, 44.0], [51.0, 44.0], [51.1, 44.0], [51.2, 44.0], [51.3, 44.0], [51.4, 44.0], [51.5, 44.0], [51.6, 45.0], [51.7, 45.0], [51.8, 45.0], [51.9, 45.0], [52.0, 45.0], [52.1, 45.0], [52.2, 45.0], [52.3, 45.0], [52.4, 46.0], [52.5, 46.0], [52.6, 46.0], [52.7, 46.0], [52.8, 46.0], [52.9, 46.0], [53.0, 46.0], [53.1, 46.0], [53.2, 46.0], [53.3, 46.0], [53.4, 47.0], [53.5, 47.0], [53.6, 47.0], [53.7, 47.0], [53.8, 47.0], [53.9, 48.0], [54.0, 48.0], [54.1, 48.0], [54.2, 48.0], [54.3, 48.0], [54.4, 48.0], [54.5, 48.0], [54.6, 48.0], [54.7, 49.0], [54.8, 49.0], [54.9, 49.0], [55.0, 49.0], [55.1, 49.0], [55.2, 49.0], [55.3, 49.0], [55.4, 50.0], [55.5, 50.0], [55.6, 50.0], [55.7, 50.0], [55.8, 50.0], [55.9, 50.0], [56.0, 50.0], [56.1, 50.0], [56.2, 50.0], [56.3, 50.0], [56.4, 51.0], [56.5, 51.0], [56.6, 51.0], [56.7, 51.0], [56.8, 51.0], [56.9, 51.0], [57.0, 51.0], [57.1, 51.0], [57.2, 51.0], [57.3, 52.0], [57.4, 52.0], [57.5, 52.0], [57.6, 52.0], [57.7, 52.0], [57.8, 52.0], [57.9, 53.0], [58.0, 53.0], [58.1, 53.0], [58.2, 53.0], [58.3, 53.0], [58.4, 53.0], [58.5, 53.0], [58.6, 53.0], [58.7, 54.0], [58.8, 54.0], [58.9, 54.0], [59.0, 54.0], [59.1, 55.0], [59.2, 55.0], [59.3, 55.0], [59.4, 55.0], [59.5, 55.0], [59.6, 55.0], [59.7, 55.0], [59.8, 56.0], [59.9, 56.0], [60.0, 56.0], [60.1, 56.0], [60.2, 56.0], [60.3, 56.0], [60.4, 56.0], [60.5, 56.0], [60.6, 57.0], [60.7, 57.0], [60.8, 57.0], [60.9, 57.0], [61.0, 57.0], [61.1, 57.0], [61.2, 57.0], [61.3, 58.0], [61.4, 58.0], [61.5, 58.0], [61.6, 58.0], [61.7, 58.0], [61.8, 58.0], [61.9, 58.0], [62.0, 58.0], [62.1, 59.0], [62.2, 59.0], [62.3, 59.0], [62.4, 59.0], [62.5, 59.0], [62.6, 59.0], [62.7, 60.0], [62.8, 60.0], [62.9, 60.0], [63.0, 60.0], [63.1, 61.0], [63.2, 61.0], [63.3, 61.0], [63.4, 61.0], [63.5, 61.0], [63.6, 61.0], [63.7, 61.0], [63.8, 61.0], [63.9, 61.0], [64.0, 62.0], [64.1, 62.0], [64.2, 62.0], [64.3, 62.0], [64.4, 62.0], [64.5, 62.0], [64.6, 63.0], [64.7, 63.0], [64.8, 63.0], [64.9, 63.0], [65.0, 63.0], [65.1, 63.0], [65.2, 63.0], [65.3, 63.0], [65.4, 63.0], [65.5, 64.0], [65.6, 64.0], [65.7, 64.0], [65.8, 64.0], [65.9, 64.0], [66.0, 64.0], [66.1, 65.0], [66.2, 65.0], [66.3, 65.0], [66.4, 65.0], [66.5, 66.0], [66.6, 66.0], [66.7, 66.0], [66.8, 66.0], [66.9, 66.0], [67.0, 66.0], [67.1, 67.0], [67.2, 67.0], [67.3, 67.0], [67.4, 67.0], [67.5, 67.0], [67.6, 67.0], [67.7, 67.0], [67.8, 67.0], [67.9, 67.0], [68.0, 68.0], [68.1, 68.0], [68.2, 68.0], [68.3, 68.0], [68.4, 68.0], [68.5, 69.0], [68.6, 69.0], [68.7, 69.0], [68.8, 69.0], [68.9, 70.0], [69.0, 70.0], [69.1, 70.0], [69.2, 70.0], [69.3, 70.0], [69.4, 71.0], [69.5, 71.0], [69.6, 71.0], [69.7, 71.0], [69.8, 71.0], [69.9, 71.0], [70.0, 72.0], [70.1, 72.0], [70.2, 72.0], [70.3, 73.0], [70.4, 73.0], [70.5, 73.0], [70.6, 73.0], [70.7, 73.0], [70.8, 73.0], [70.9, 74.0], [71.0, 74.0], [71.1, 74.0], [71.2, 74.0], [71.3, 74.0], [71.4, 75.0], [71.5, 75.0], [71.6, 75.0], [71.7, 75.0], [71.8, 76.0], [71.9, 76.0], [72.0, 76.0], [72.1, 77.0], [72.2, 77.0], [72.3, 77.0], [72.4, 77.0], [72.5, 77.0], [72.6, 78.0], [72.7, 78.0], [72.8, 78.0], [72.9, 79.0], [73.0, 79.0], [73.1, 79.0], [73.2, 79.0], [73.3, 80.0], [73.4, 80.0], [73.5, 81.0], [73.6, 81.0], [73.7, 81.0], [73.8, 82.0], [73.9, 82.0], [74.0, 82.0], [74.1, 82.0], [74.2, 83.0], [74.3, 83.0], [74.4, 83.0], [74.5, 84.0], [74.6, 84.0], [74.7, 84.0], [74.8, 84.0], [74.9, 84.0], [75.0, 85.0], [75.1, 85.0], [75.2, 85.0], [75.3, 86.0], [75.4, 86.0], [75.5, 86.0], [75.6, 86.0], [75.7, 87.0], [75.8, 87.0], [75.9, 87.0], [76.0, 87.0], [76.1, 87.0], [76.2, 88.0], [76.3, 88.0], [76.4, 88.0], [76.5, 88.0], [76.6, 88.0], [76.7, 89.0], [76.8, 90.0], [76.9, 90.0], [77.0, 90.0], [77.1, 90.0], [77.2, 91.0], [77.3, 91.0], [77.4, 91.0], [77.5, 92.0], [77.6, 92.0], [77.7, 93.0], [77.8, 93.0], [77.9, 94.0], [78.0, 94.0], [78.1, 95.0], [78.2, 95.0], [78.3, 95.0], [78.4, 96.0], [78.5, 96.0], [78.6, 97.0], [78.7, 97.0], [78.8, 97.0], [78.9, 97.0], [79.0, 98.0], [79.1, 99.0], [79.2, 99.0], [79.3, 99.0], [79.4, 100.0], [79.5, 101.0], [79.6, 102.0], [79.7, 102.0], [79.8, 102.0], [79.9, 103.0], [80.0, 103.0], [80.1, 104.0], [80.2, 105.0], [80.3, 106.0], [80.4, 106.0], [80.5, 107.0], [80.6, 108.0], [80.7, 108.0], [80.8, 109.0], [80.9, 110.0], [81.0, 111.0], [81.1, 112.0], [81.2, 112.0], [81.3, 113.0], [81.4, 114.0], [81.5, 114.0], [81.6, 115.0], [81.7, 116.0], [81.8, 117.0], [81.9, 117.0], [82.0, 118.0], [82.1, 119.0], [82.2, 119.0], [82.3, 121.0], [82.4, 122.0], [82.5, 123.0], [82.6, 123.0], [82.7, 124.0], [82.8, 125.0], [82.9, 126.0], [83.0, 126.0], [83.1, 127.0], [83.2, 128.0], [83.3, 129.0], [83.4, 130.0], [83.5, 131.0], [83.6, 132.0], [83.7, 132.0], [83.8, 133.0], [83.9, 134.0], [84.0, 135.0], [84.1, 136.0], [84.2, 138.0], [84.3, 140.0], [84.4, 142.0], [84.5, 144.0], [84.6, 145.0], [84.7, 146.0], [84.8, 148.0], [84.9, 151.0], [85.0, 153.0], [85.1, 155.0], [85.2, 157.0], [85.3, 159.0], [85.4, 164.0], [85.5, 165.0], [85.6, 168.0], [85.7, 173.0], [85.8, 176.0], [85.9, 177.0], [86.0, 182.0], [86.1, 183.0], [86.2, 190.0], [86.3, 195.0], [86.4, 198.0], [86.5, 203.0], [86.6, 206.0], [86.7, 209.0], [86.8, 215.0], [86.9, 216.0], [87.0, 219.0], [87.1, 221.0], [87.2, 221.0], [87.3, 222.0], [87.4, 222.0], [87.5, 223.0], [87.6, 225.0], [87.7, 227.0], [87.8, 228.0], [87.9, 231.0], [88.0, 232.0], [88.1, 235.0], [88.2, 236.0], [88.3, 240.0], [88.4, 241.0], [88.5, 242.0], [88.6, 243.0], [88.7, 244.0], [88.8, 246.0], [88.9, 246.0], [89.0, 247.0], [89.1, 249.0], [89.2, 273.0], [89.3, 290.0], [89.4, 312.0], [89.5, 322.0], [89.6, 325.0], [89.7, 329.0], [89.8, 330.0], [89.9, 334.0], [90.0, 336.0], [90.1, 337.0], [90.2, 338.0], [90.3, 340.0], [90.4, 341.0], [90.5, 343.0], [90.6, 343.0], [90.7, 349.0], [90.8, 350.0], [90.9, 353.0], [91.0, 383.0], [91.1, 424.0], [91.2, 470.0], [91.3, 505.0], [91.4, 514.0], [91.5, 529.0], [91.6, 537.0], [91.7, 544.0], [91.8, 546.0], [91.9, 550.0], [92.0, 553.0], [92.1, 557.0], [92.2, 575.0], [92.3, 581.0], [92.4, 592.0], [92.5, 595.0], [92.6, 605.0], [92.7, 615.0], [92.8, 619.0], [92.9, 629.0], [93.0, 642.0], [93.1, 650.0], [93.2, 969.0], [93.3, 1062.0], [93.4, 2742.0], [93.5, 4533.0], [93.6, 4594.0], [93.7, 5632.0], [93.8, 5643.0], [93.9, 6253.0], [94.0, 6286.0], [94.1, 6690.0], [94.2, 7060.0], [94.3, 7257.0], [94.4, 7575.0], [94.5, 7778.0], [94.6, 9336.0], [94.7, 9340.0], [94.8, 9486.0], [94.9, 10012.0], [95.0, 10932.0], [95.1, 11707.0], [95.2, 11965.0], [95.3, 12116.0], [95.4, 12144.0], [95.5, 12163.0], [95.6, 12397.0], [95.7, 13750.0], [95.8, 14490.0], [95.9, 14492.0], [96.0, 14777.0], [96.1, 15087.0], [96.2, 15142.0], [96.3, 15443.0], [96.4, 15650.0], [96.5, 15811.0], [96.6, 15836.0], [96.7, 15841.0], [96.8, 15844.0], [96.9, 15846.0], [97.0, 15874.0], [97.1, 15879.0], [97.2, 15935.0], [97.3, 15985.0], [97.4, 15985.0], [97.5, 15986.0], [97.6, 15991.0], [97.7, 16005.0], [97.8, 16053.0], [97.9, 16075.0], [98.0, 16077.0], [98.1, 16444.0], [98.2, 16444.0], [98.3, 16585.0], [98.4, 16614.0], [98.5, 16615.0], [98.6, 16621.0], [98.7, 16622.0], [98.8, 16628.0], [98.9, 17819.0], [99.0, 18625.0], [99.1, 18753.0], [99.2, 18906.0], [99.3, 18979.0], [99.4, 19798.0], [99.5, 20089.0], [99.6, 20299.0], [99.7, 20536.0], [99.8, 21432.0], [99.9, 21617.0], [100.0, 25573.0]], "isOverall": false, "label": "get tests", "isController": false}, {"data": [[0.0, 3.0], [0.1, 3.0], [0.2, 3.0], [0.3, 3.0], [0.4, 3.0], [0.5, 3.0], [0.6, 3.0], [0.7, 3.0], [0.8, 3.0], [0.9, 3.0], [1.0, 3.0], [1.1, 3.0], [1.2, 3.0], [1.3, 4.0], [1.4, 4.0], [1.5, 4.0], [1.6, 4.0], [1.7, 4.0], [1.8, 4.0], [1.9, 4.0], [2.0, 4.0], [2.1, 4.0], [2.2, 4.0], [2.3, 4.0], [2.4, 4.0], [2.5, 4.0], [2.6, 4.0], [2.7, 4.0], [2.8, 4.0], [2.9, 4.0], [3.0, 4.0], [3.1, 4.0], [3.2, 4.0], [3.3, 4.0], [3.4, 4.0], [3.5, 4.0], [3.6, 4.0], [3.7, 4.0], [3.8, 4.0], [3.9, 4.0], [4.0, 4.0], [4.1, 4.0], [4.2, 4.0], [4.3, 4.0], [4.4, 4.0], [4.5, 4.0], [4.6, 4.0], [4.7, 4.0], [4.8, 4.0], [4.9, 4.0], [5.0, 4.0], [5.1, 4.0], [5.2, 4.0], [5.3, 4.0], [5.4, 4.0], [5.5, 4.0], [5.6, 4.0], [5.7, 4.0], [5.8, 4.0], [5.9, 4.0], [6.0, 4.0], [6.1, 4.0], [6.2, 4.0], [6.3, 4.0], [6.4, 4.0], [6.5, 4.0], [6.6, 4.0], [6.7, 4.0], [6.8, 4.0], [6.9, 4.0], [7.0, 4.0], [7.1, 4.0], [7.2, 4.0], [7.3, 4.0], [7.4, 4.0], [7.5, 4.0], [7.6, 5.0], [7.7, 5.0], [7.8, 5.0], [7.9, 5.0], [8.0, 5.0], [8.1, 5.0], [8.2, 5.0], [8.3, 5.0], [8.4, 5.0], [8.5, 5.0], [8.6, 5.0], [8.7, 5.0], [8.8, 5.0], [8.9, 5.0], [9.0, 5.0], [9.1, 5.0], [9.2, 5.0], [9.3, 5.0], [9.4, 5.0], [9.5, 5.0], [9.6, 5.0], [9.7, 5.0], [9.8, 5.0], [9.9, 5.0], [10.0, 5.0], [10.1, 5.0], [10.2, 5.0], [10.3, 5.0], [10.4, 5.0], [10.5, 5.0], [10.6, 5.0], [10.7, 5.0], [10.8, 5.0], [10.9, 5.0], [11.0, 5.0], [11.1, 5.0], [11.2, 5.0], [11.3, 5.0], [11.4, 5.0], [11.5, 5.0], [11.6, 5.0], [11.7, 5.0], [11.8, 5.0], [11.9, 5.0], [12.0, 5.0], [12.1, 5.0], [12.2, 5.0], [12.3, 5.0], [12.4, 5.0], [12.5, 5.0], [12.6, 5.0], [12.7, 5.0], [12.8, 5.0], [12.9, 5.0], [13.0, 5.0], [13.1, 5.0], [13.2, 5.0], [13.3, 5.0], [13.4, 6.0], [13.5, 6.0], [13.6, 6.0], [13.7, 6.0], [13.8, 6.0], [13.9, 6.0], [14.0, 6.0], [14.1, 6.0], [14.2, 6.0], [14.3, 6.0], [14.4, 6.0], [14.5, 6.0], [14.6, 6.0], [14.7, 6.0], [14.8, 6.0], [14.9, 6.0], [15.0, 6.0], [15.1, 6.0], [15.2, 6.0], [15.3, 6.0], [15.4, 6.0], [15.5, 6.0], [15.6, 6.0], [15.7, 6.0], [15.8, 6.0], [15.9, 6.0], [16.0, 6.0], [16.1, 6.0], [16.2, 6.0], [16.3, 6.0], [16.4, 6.0], [16.5, 6.0], [16.6, 6.0], [16.7, 6.0], [16.8, 6.0], [16.9, 6.0], [17.0, 6.0], [17.1, 6.0], [17.2, 6.0], [17.3, 6.0], [17.4, 6.0], [17.5, 6.0], [17.6, 7.0], [17.7, 7.0], [17.8, 7.0], [17.9, 7.0], [18.0, 7.0], [18.1, 7.0], [18.2, 7.0], [18.3, 7.0], [18.4, 7.0], [18.5, 7.0], [18.6, 7.0], [18.7, 7.0], [18.8, 7.0], [18.9, 7.0], [19.0, 7.0], [19.1, 7.0], [19.2, 7.0], [19.3, 7.0], [19.4, 7.0], [19.5, 7.0], [19.6, 7.0], [19.7, 7.0], [19.8, 7.0], [19.9, 7.0], [20.0, 7.0], [20.1, 7.0], [20.2, 7.0], [20.3, 7.0], [20.4, 7.0], [20.5, 8.0], [20.6, 8.0], [20.7, 8.0], [20.8, 8.0], [20.9, 8.0], [21.0, 8.0], [21.1, 8.0], [21.2, 8.0], [21.3, 8.0], [21.4, 8.0], [21.5, 8.0], [21.6, 8.0], [21.7, 8.0], [21.8, 8.0], [21.9, 8.0], [22.0, 8.0], [22.1, 8.0], [22.2, 8.0], [22.3, 8.0], [22.4, 8.0], [22.5, 8.0], [22.6, 8.0], [22.7, 8.0], [22.8, 8.0], [22.9, 8.0], [23.0, 8.0], [23.1, 8.0], [23.2, 8.0], [23.3, 8.0], [23.4, 9.0], [23.5, 9.0], [23.6, 9.0], [23.7, 9.0], [23.8, 9.0], [23.9, 9.0], [24.0, 9.0], [24.1, 9.0], [24.2, 9.0], [24.3, 9.0], [24.4, 9.0], [24.5, 9.0], [24.6, 9.0], [24.7, 9.0], [24.8, 9.0], [24.9, 9.0], [25.0, 9.0], [25.1, 9.0], [25.2, 9.0], [25.3, 9.0], [25.4, 9.0], [25.5, 9.0], [25.6, 9.0], [25.7, 9.0], [25.8, 9.0], [25.9, 9.0], [26.0, 9.0], [26.1, 9.0], [26.2, 10.0], [26.3, 10.0], [26.4, 10.0], [26.5, 10.0], [26.6, 10.0], [26.7, 10.0], [26.8, 10.0], [26.9, 10.0], [27.0, 10.0], [27.1, 10.0], [27.2, 10.0], [27.3, 10.0], [27.4, 10.0], [27.5, 10.0], [27.6, 10.0], [27.7, 10.0], [27.8, 10.0], [27.9, 10.0], [28.0, 10.0], [28.1, 10.0], [28.2, 10.0], [28.3, 10.0], [28.4, 10.0], [28.5, 10.0], [28.6, 10.0], [28.7, 10.0], [28.8, 10.0], [28.9, 10.0], [29.0, 10.0], [29.1, 10.0], [29.2, 10.0], [29.3, 11.0], [29.4, 11.0], [29.5, 11.0], [29.6, 11.0], [29.7, 11.0], [29.8, 11.0], [29.9, 11.0], [30.0, 11.0], [30.1, 11.0], [30.2, 11.0], [30.3, 11.0], [30.4, 11.0], [30.5, 11.0], [30.6, 11.0], [30.7, 11.0], [30.8, 11.0], [30.9, 11.0], [31.0, 11.0], [31.1, 11.0], [31.2, 12.0], [31.3, 12.0], [31.4, 12.0], [31.5, 12.0], [31.6, 12.0], [31.7, 12.0], [31.8, 12.0], [31.9, 12.0], [32.0, 12.0], [32.1, 12.0], [32.2, 12.0], [32.3, 12.0], [32.4, 12.0], [32.5, 12.0], [32.6, 12.0], [32.7, 12.0], [32.8, 12.0], [32.9, 12.0], [33.0, 12.0], [33.1, 12.0], [33.2, 12.0], [33.3, 12.0], [33.4, 12.0], [33.5, 13.0], [33.6, 13.0], [33.7, 13.0], [33.8, 13.0], [33.9, 13.0], [34.0, 13.0], [34.1, 13.0], [34.2, 13.0], [34.3, 13.0], [34.4, 13.0], [34.5, 13.0], [34.6, 13.0], [34.7, 13.0], [34.8, 13.0], [34.9, 13.0], [35.0, 13.0], [35.1, 13.0], [35.2, 13.0], [35.3, 13.0], [35.4, 13.0], [35.5, 13.0], [35.6, 13.0], [35.7, 13.0], [35.8, 13.0], [35.9, 13.0], [36.0, 13.0], [36.1, 14.0], [36.2, 14.0], [36.3, 14.0], [36.4, 14.0], [36.5, 14.0], [36.6, 14.0], [36.7, 14.0], [36.8, 14.0], [36.9, 14.0], [37.0, 14.0], [37.1, 14.0], [37.2, 14.0], [37.3, 14.0], [37.4, 14.0], [37.5, 14.0], [37.6, 14.0], [37.7, 14.0], [37.8, 14.0], [37.9, 14.0], [38.0, 14.0], [38.1, 14.0], [38.2, 14.0], [38.3, 15.0], [38.4, 15.0], [38.5, 15.0], [38.6, 15.0], [38.7, 15.0], [38.8, 15.0], [38.9, 15.0], [39.0, 15.0], [39.1, 15.0], [39.2, 15.0], [39.3, 15.0], [39.4, 15.0], [39.5, 15.0], [39.6, 15.0], [39.7, 15.0], [39.8, 15.0], [39.9, 15.0], [40.0, 15.0], [40.1, 15.0], [40.2, 15.0], [40.3, 15.0], [40.4, 15.0], [40.5, 15.0], [40.6, 16.0], [40.7, 16.0], [40.8, 16.0], [40.9, 16.0], [41.0, 16.0], [41.1, 16.0], [41.2, 16.0], [41.3, 16.0], [41.4, 16.0], [41.5, 16.0], [41.6, 16.0], [41.7, 16.0], [41.8, 16.0], [41.9, 16.0], [42.0, 16.0], [42.1, 16.0], [42.2, 17.0], [42.3, 17.0], [42.4, 17.0], [42.5, 17.0], [42.6, 17.0], [42.7, 17.0], [42.8, 17.0], [42.9, 17.0], [43.0, 17.0], [43.1, 17.0], [43.2, 17.0], [43.3, 17.0], [43.4, 17.0], [43.5, 17.0], [43.6, 17.0], [43.7, 17.0], [43.8, 17.0], [43.9, 18.0], [44.0, 18.0], [44.1, 18.0], [44.2, 18.0], [44.3, 18.0], [44.4, 18.0], [44.5, 18.0], [44.6, 18.0], [44.7, 18.0], [44.8, 18.0], [44.9, 18.0], [45.0, 18.0], [45.1, 18.0], [45.2, 18.0], [45.3, 18.0], [45.4, 18.0], [45.5, 18.0], [45.6, 19.0], [45.7, 19.0], [45.8, 19.0], [45.9, 19.0], [46.0, 19.0], [46.1, 19.0], [46.2, 19.0], [46.3, 19.0], [46.4, 19.0], [46.5, 19.0], [46.6, 19.0], [46.7, 19.0], [46.8, 19.0], [46.9, 19.0], [47.0, 19.0], [47.1, 19.0], [47.2, 19.0], [47.3, 19.0], [47.4, 20.0], [47.5, 20.0], [47.6, 20.0], [47.7, 20.0], [47.8, 20.0], [47.9, 20.0], [48.0, 20.0], [48.1, 20.0], [48.2, 20.0], [48.3, 20.0], [48.4, 20.0], [48.5, 20.0], [48.6, 20.0], [48.7, 20.0], [48.8, 20.0], [48.9, 20.0], [49.0, 20.0], [49.1, 20.0], [49.2, 20.0], [49.3, 20.0], [49.4, 21.0], [49.5, 21.0], [49.6, 21.0], [49.7, 21.0], [49.8, 21.0], [49.9, 21.0], [50.0, 21.0], [50.1, 21.0], [50.2, 21.0], [50.3, 21.0], [50.4, 21.0], [50.5, 21.0], [50.6, 21.0], [50.7, 21.0], [50.8, 21.0], [50.9, 21.0], [51.0, 21.0], [51.1, 22.0], [51.2, 22.0], [51.3, 22.0], [51.4, 22.0], [51.5, 22.0], [51.6, 22.0], [51.7, 22.0], [51.8, 22.0], [51.9, 22.0], [52.0, 22.0], [52.1, 22.0], [52.2, 22.0], [52.3, 22.0], [52.4, 22.0], [52.5, 23.0], [52.6, 23.0], [52.7, 23.0], [52.8, 23.0], [52.9, 23.0], [53.0, 23.0], [53.1, 23.0], [53.2, 23.0], [53.3, 23.0], [53.4, 23.0], [53.5, 23.0], [53.6, 23.0], [53.7, 23.0], [53.8, 24.0], [53.9, 24.0], [54.0, 24.0], [54.1, 24.0], [54.2, 24.0], [54.3, 24.0], [54.4, 24.0], [54.5, 24.0], [54.6, 24.0], [54.7, 24.0], [54.8, 24.0], [54.9, 24.0], [55.0, 24.0], [55.1, 24.0], [55.2, 24.0], [55.3, 24.0], [55.4, 24.0], [55.5, 25.0], [55.6, 25.0], [55.7, 25.0], [55.8, 25.0], [55.9, 25.0], [56.0, 25.0], [56.1, 25.0], [56.2, 25.0], [56.3, 25.0], [56.4, 25.0], [56.5, 25.0], [56.6, 25.0], [56.7, 25.0], [56.8, 25.0], [56.9, 25.0], [57.0, 25.0], [57.1, 25.0], [57.2, 25.0], [57.3, 25.0], [57.4, 26.0], [57.5, 26.0], [57.6, 26.0], [57.7, 26.0], [57.8, 26.0], [57.9, 26.0], [58.0, 26.0], [58.1, 26.0], [58.2, 26.0], [58.3, 26.0], [58.4, 26.0], [58.5, 26.0], [58.6, 26.0], [58.7, 26.0], [58.8, 26.0], [58.9, 26.0], [59.0, 27.0], [59.1, 27.0], [59.2, 27.0], [59.3, 27.0], [59.4, 27.0], [59.5, 27.0], [59.6, 27.0], [59.7, 27.0], [59.8, 27.0], [59.9, 27.0], [60.0, 27.0], [60.1, 27.0], [60.2, 28.0], [60.3, 28.0], [60.4, 28.0], [60.5, 28.0], [60.6, 28.0], [60.7, 28.0], [60.8, 28.0], [60.9, 28.0], [61.0, 28.0], [61.1, 28.0], [61.2, 28.0], [61.3, 28.0], [61.4, 28.0], [61.5, 28.0], [61.6, 28.0], [61.7, 29.0], [61.8, 29.0], [61.9, 29.0], [62.0, 29.0], [62.1, 29.0], [62.2, 29.0], [62.3, 29.0], [62.4, 29.0], [62.5, 29.0], [62.6, 29.0], [62.7, 30.0], [62.8, 30.0], [62.9, 30.0], [63.0, 30.0], [63.1, 30.0], [63.2, 30.0], [63.3, 30.0], [63.4, 30.0], [63.5, 30.0], [63.6, 30.0], [63.7, 30.0], [63.8, 30.0], [63.9, 30.0], [64.0, 31.0], [64.1, 31.0], [64.2, 31.0], [64.3, 31.0], [64.4, 31.0], [64.5, 31.0], [64.6, 31.0], [64.7, 31.0], [64.8, 32.0], [64.9, 32.0], [65.0, 32.0], [65.1, 32.0], [65.2, 32.0], [65.3, 32.0], [65.4, 32.0], [65.5, 32.0], [65.6, 32.0], [65.7, 32.0], [65.8, 32.0], [65.9, 33.0], [66.0, 33.0], [66.1, 33.0], [66.2, 33.0], [66.3, 33.0], [66.4, 33.0], [66.5, 33.0], [66.6, 33.0], [66.7, 34.0], [66.8, 34.0], [66.9, 34.0], [67.0, 34.0], [67.1, 34.0], [67.2, 34.0], [67.3, 34.0], [67.4, 34.0], [67.5, 35.0], [67.6, 35.0], [67.7, 35.0], [67.8, 35.0], [67.9, 35.0], [68.0, 35.0], [68.1, 35.0], [68.2, 35.0], [68.3, 36.0], [68.4, 36.0], [68.5, 36.0], [68.6, 36.0], [68.7, 36.0], [68.8, 36.0], [68.9, 36.0], [69.0, 37.0], [69.1, 37.0], [69.2, 37.0], [69.3, 37.0], [69.4, 37.0], [69.5, 37.0], [69.6, 37.0], [69.7, 38.0], [69.8, 38.0], [69.9, 38.0], [70.0, 38.0], [70.1, 38.0], [70.2, 38.0], [70.3, 39.0], [70.4, 39.0], [70.5, 39.0], [70.6, 39.0], [70.7, 39.0], [70.8, 40.0], [70.9, 40.0], [71.0, 40.0], [71.1, 40.0], [71.2, 41.0], [71.3, 41.0], [71.4, 41.0], [71.5, 41.0], [71.6, 41.0], [71.7, 42.0], [71.8, 42.0], [71.9, 42.0], [72.0, 43.0], [72.1, 43.0], [72.2, 43.0], [72.3, 43.0], [72.4, 43.0], [72.5, 44.0], [72.6, 44.0], [72.7, 44.0], [72.8, 45.0], [72.9, 45.0], [73.0, 45.0], [73.1, 45.0], [73.2, 45.0], [73.3, 45.0], [73.4, 46.0], [73.5, 46.0], [73.6, 46.0], [73.7, 46.0], [73.8, 47.0], [73.9, 47.0], [74.0, 47.0], [74.1, 47.0], [74.2, 47.0], [74.3, 47.0], [74.4, 48.0], [74.5, 48.0], [74.6, 48.0], [74.7, 49.0], [74.8, 49.0], [74.9, 49.0], [75.0, 50.0], [75.1, 50.0], [75.2, 50.0], [75.3, 51.0], [75.4, 51.0], [75.5, 52.0], [75.6, 52.0], [75.7, 52.0], [75.8, 53.0], [75.9, 53.0], [76.0, 54.0], [76.1, 54.0], [76.2, 55.0], [76.3, 56.0], [76.4, 56.0], [76.5, 57.0], [76.6, 57.0], [76.7, 58.0], [76.8, 59.0], [76.9, 59.0], [77.0, 60.0], [77.1, 61.0], [77.2, 62.0], [77.3, 63.0], [77.4, 63.0], [77.5, 64.0], [77.6, 65.0], [77.7, 65.0], [77.8, 66.0], [77.9, 66.0], [78.0, 67.0], [78.1, 67.0], [78.2, 69.0], [78.3, 70.0], [78.4, 71.0], [78.5, 73.0], [78.6, 73.0], [78.7, 74.0], [78.8, 75.0], [78.9, 75.0], [79.0, 76.0], [79.1, 77.0], [79.2, 77.0], [79.3, 79.0], [79.4, 80.0], [79.5, 80.0], [79.6, 81.0], [79.7, 81.0], [79.8, 81.0], [79.9, 82.0], [80.0, 82.0], [80.1, 83.0], [80.2, 84.0], [80.3, 84.0], [80.4, 86.0], [80.5, 86.0], [80.6, 87.0], [80.7, 87.0], [80.8, 88.0], [80.9, 88.0], [81.0, 89.0], [81.1, 90.0], [81.2, 91.0], [81.3, 91.0], [81.4, 92.0], [81.5, 93.0], [81.6, 93.0], [81.7, 94.0], [81.8, 95.0], [81.9, 96.0], [82.0, 97.0], [82.1, 98.0], [82.2, 98.0], [82.3, 99.0], [82.4, 101.0], [82.5, 102.0], [82.6, 103.0], [82.7, 104.0], [82.8, 105.0], [82.9, 105.0], [83.0, 107.0], [83.1, 109.0], [83.2, 110.0], [83.3, 110.0], [83.4, 111.0], [83.5, 111.0], [83.6, 111.0], [83.7, 112.0], [83.8, 112.0], [83.9, 113.0], [84.0, 113.0], [84.1, 114.0], [84.2, 114.0], [84.3, 115.0], [84.4, 116.0], [84.5, 118.0], [84.6, 119.0], [84.7, 119.0], [84.8, 122.0], [84.9, 124.0], [85.0, 129.0], [85.1, 133.0], [85.2, 134.0], [85.3, 140.0], [85.4, 144.0], [85.5, 146.0], [85.6, 150.0], [85.7, 152.0], [85.8, 154.0], [85.9, 157.0], [86.0, 159.0], [86.1, 164.0], [86.2, 169.0], [86.3, 171.0], [86.4, 179.0], [86.5, 184.0], [86.6, 185.0], [86.7, 189.0], [86.8, 191.0], [86.9, 195.0], [87.0, 201.0], [87.1, 201.0], [87.2, 202.0], [87.3, 204.0], [87.4, 206.0], [87.5, 207.0], [87.6, 207.0], [87.7, 209.0], [87.8, 210.0], [87.9, 220.0], [88.0, 222.0], [88.1, 224.0], [88.2, 225.0], [88.3, 226.0], [88.4, 228.0], [88.5, 228.0], [88.6, 228.0], [88.7, 229.0], [88.8, 229.0], [88.9, 230.0], [89.0, 233.0], [89.1, 234.0], [89.2, 236.0], [89.3, 237.0], [89.4, 244.0], [89.5, 254.0], [89.6, 259.0], [89.7, 266.0], [89.8, 268.0], [89.9, 296.0], [90.0, 307.0], [90.1, 340.0], [90.2, 345.0], [90.3, 354.0], [90.4, 366.0], [90.5, 368.0], [90.6, 373.0], [90.7, 379.0], [90.8, 386.0], [90.9, 391.0], [91.0, 396.0], [91.1, 399.0], [91.2, 405.0], [91.3, 453.0], [91.4, 470.0], [91.5, 473.0], [91.6, 478.0], [91.7, 483.0], [91.8, 498.0], [91.9, 502.0], [92.0, 504.0], [92.1, 507.0], [92.2, 513.0], [92.3, 518.0], [92.4, 522.0], [92.5, 526.0], [92.6, 527.0], [92.7, 529.0], [92.8, 882.0], [92.9, 1115.0], [93.0, 1116.0], [93.1, 1280.0], [93.2, 1332.0], [93.3, 1360.0], [93.4, 1472.0], [93.5, 2134.0], [93.6, 2391.0], [93.7, 2393.0], [93.8, 2616.0], [93.9, 2827.0], [94.0, 2881.0], [94.1, 3082.0], [94.2, 3084.0], [94.3, 3087.0], [94.4, 3102.0], [94.5, 3108.0], [94.6, 3302.0], [94.7, 3352.0], [94.8, 3497.0], [94.9, 3561.0], [95.0, 3641.0], [95.1, 3688.0], [95.2, 3852.0], [95.3, 3934.0], [95.4, 3984.0], [95.5, 4039.0], [95.6, 4144.0], [95.7, 4267.0], [95.8, 4349.0], [95.9, 4370.0], [96.0, 4388.0], [96.1, 4566.0], [96.2, 4665.0], [96.3, 4751.0], [96.4, 5076.0], [96.5, 5147.0], [96.6, 5582.0], [96.7, 5650.0], [96.8, 5804.0], [96.9, 6083.0], [97.0, 6171.0], [97.1, 6311.0], [97.2, 6364.0], [97.3, 6892.0], [97.4, 6952.0], [97.5, 6953.0], [97.6, 7216.0], [97.7, 7395.0], [97.8, 7396.0], [97.9, 7397.0], [98.0, 7446.0], [98.1, 8022.0], [98.2, 8132.0], [98.3, 8338.0], [98.4, 9066.0], [98.5, 9514.0], [98.6, 10130.0], [98.7, 11241.0], [98.8, 11533.0], [98.9, 12339.0], [99.0, 13441.0], [99.1, 14749.0], [99.2, 15544.0], [99.3, 16602.0], [99.4, 17616.0], [99.5, 18632.0], [99.6, 18864.0], [99.7, 19608.0], [99.8, 20685.0], [99.9, 21922.0], [100.0, 23007.0]], "isOverall": false, "label": "get session user", "isController": false}], "supportsControllersDiscrimination": true, "maxX": 100.0, "title": "Response Time Percentiles"}},
        getOptions: function() {
            return {
                series: {
                    points: { show: false }
                },
                legend: {
                    noColumns: 2,
                    show: true,
                    container: '#legendResponseTimePercentiles'
                },
                xaxis: {
                    tickDecimals: 1,
                    axisLabel: "Percentiles",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Percentile value in ms",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to
                                    // work
                },
                tooltip: true,
                tooltipOpts: {
                    content: "%s : %x.2 percentile was %y ms"
                },
                selection: { mode: "xy" },
            };
        },
        createGraph: function() {
            var data = this.data;
            var dataset = prepareData(data.result.series, $("#choicesResponseTimePercentiles"), function(series){
                series.curvedLines = {apply: true, tension: 1};
                series.threshold = {
                        below: percentileThreshold,
                        color: $("#slider-vertical").children("div").css("background-color")
                };
            });
            var options = this.getOptions();
            prepareOptions(options, data);
            $.plot($("#flotResponseTimesPercentiles"), dataset, options);
            // setup overview
            $.plot($("#overviewResponseTimesPercentiles"), dataset, prepareOverviewOptions(options));
        }
};

// Response times percentiles
function refreshResponseTimePercentiles() {
    var infos = responseTimePercentilesInfos;
    prepareSeries(infos.data);
    if (isGraph($("#flotResponseTimesPercentiles"))){
        infos.createGraph();
    } else {
        var choiceContainer = $("#choicesResponseTimePercentiles");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotResponseTimesPercentiles", "#overviewResponseTimesPercentiles");
        $('#bodyResponseTimePercentiles .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
}

var responseTimeDistributionInfos = {
        data: {"result": {"minY": 1.0, "minX": 0.0, "maxY": 2811.0, "series": [{"data": [[8500.0, 11.0], [9000.0, 15.0], [9500.0, 7.0], [10000.0, 2.0], [10500.0, 6.0], [11000.0, 10.0], [11500.0, 16.0], [12000.0, 5.0], [13000.0, 2.0], [14000.0, 8.0], [15000.0, 5.0], [15500.0, 9.0], [16000.0, 12.0], [17000.0, 2.0], [18000.0, 4.0], [20000.0, 3.0], [21000.0, 3.0], [22500.0, 3.0], [23500.0, 3.0], [24500.0, 2.0], [1500.0, 1.0], [25500.0, 3.0], [26500.0, 5.0], [27500.0, 1.0], [29000.0, 1.0], [31000.0, 5.0], [32000.0, 3.0], [33000.0, 3.0], [33500.0, 11.0], [34000.0, 69.0], [2500.0, 1.0], [4000.0, 4.0], [4500.0, 4.0], [5500.0, 2.0], [6000.0, 14.0], [6500.0, 17.0], [7000.0, 13.0], [7500.0, 7.0], [8000.0, 14.0]], "isOverall": false, "label": "signin", "isController": false}, {"data": [[0.0, 2793.0], [9000.0, 9.0], [10000.0, 3.0], [10500.0, 4.0], [11000.0, 2.0], [11500.0, 4.0], [12000.0, 14.0], [13500.0, 2.0], [14000.0, 5.0], [14500.0, 5.0], [15000.0, 7.0], [15500.0, 42.0], [16000.0, 16.0], [1000.0, 5.0], [16500.0, 20.0], [17000.0, 1.0], [17500.0, 1.0], [18000.0, 1.0], [18500.0, 11.0], [19000.0, 1.0], [19500.0, 4.0], [20000.0, 4.0], [20500.0, 4.0], [21500.0, 4.0], [21000.0, 3.0], [1500.0, 1.0], [25500.0, 1.0], [2500.0, 2.0], [3000.0, 1.0], [4500.0, 6.0], [5500.0, 6.0], [6000.0, 5.0], [6500.0, 4.0], [7000.0, 5.0], [7500.0, 5.0], [500.0, 59.0]], "isOverall": false, "label": "get tests", "isController": false}, {"data": [[0.0, 2811.0], [9000.0, 2.0], [9500.0, 2.0], [10000.0, 3.0], [11000.0, 3.0], [11500.0, 4.0], [12000.0, 3.0], [12500.0, 1.0], [13000.0, 3.0], [14500.0, 2.0], [15500.0, 4.0], [1000.0, 18.0], [16500.0, 2.0], [17500.0, 4.0], [18500.0, 5.0], [19500.0, 3.0], [20000.0, 1.0], [21500.0, 2.0], [20500.0, 2.0], [23000.0, 3.0], [1500.0, 1.0], [2000.0, 8.0], [2500.0, 8.0], [3000.0, 24.0], [3500.0, 21.0], [4000.0, 17.0], [4500.0, 9.0], [5000.0, 6.0], [5500.0, 10.0], [6000.0, 11.0], [6500.0, 10.0], [7000.0, 14.0], [8000.0, 12.0], [500.0, 31.0]], "isOverall": false, "label": "get session user", "isController": false}], "supportsControllersDiscrimination": true, "granularity": 500, "maxX": 34000.0, "title": "Response Time Distribution"}},
        getOptions: function() {
            var granularity = this.data.result.granularity;
            return {
                legend: {
                    noColumns: 2,
                    show: true,
                    container: '#legendResponseTimeDistribution'
                },
                xaxis:{
                    axisLabel: "Response times in ms",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Number of responses",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                bars : {
                    show: true,
                    barWidth: this.data.result.granularity
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to
                                    // work
                },
                tooltip: true,
                tooltipOpts: {
                    content: function(label, xval, yval, flotItem){
                        return yval + " responses for " + label + " were between " + xval + " and " + (xval + granularity) + " ms";
                    }
                }
            };
        },
        createGraph: function() {
            var data = this.data;
            var options = this.getOptions();
            prepareOptions(options, data);
            $.plot($("#flotResponseTimeDistribution"), prepareData(data.result.series, $("#choicesResponseTimeDistribution")), options);
        }

};

// Response time distribution
function refreshResponseTimeDistribution() {
    var infos = responseTimeDistributionInfos;
    prepareSeries(infos.data);
    if (isGraph($("#flotResponseTimeDistribution"))){
        infos.createGraph();
    }else{
        var choiceContainer = $("#choicesResponseTimeDistribution");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        $('#footerResponseTimeDistribution .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
};

var activeThreadsOverTimeInfos = {
        data: {"result": {"minY": 49.30514285714283, "minX": 1.51384242E12, "maxY": 51.0, "series": [{"data": [[1.51384242E12, 51.0], [1.51384248E12, 49.30514285714283]], "isOverall": false, "label": "PTC test", "isController": false}], "supportsControllersDiscrimination": false, "granularity": 60000, "maxX": 1.51384248E12, "title": "Active Threads Over Time"}},
        getOptions: function() {
            return {
                series: {
                    lines: {
                        show: true
                    },
                    points: {
                        show: true
                    }
                },
                xaxis: {
                    mode: "time",
                    timeformat: "%H:%M:%S",
                    axisLabel: getElapsedTimeLabel(this.data.result.granularity),
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Number of active threads",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20
                },
                legend: {
                    noColumns: 6,
                    show: true,
                    container: '#legendActiveThreadsOverTime'
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to
                                    // work
                },
                selection: {
                    mode: 'xy'
                },
                tooltip: true,
                tooltipOpts: {
                    content: "%s : At %x there were %y active threads"
                }
            };
        },
        createGraph: function() {
            var data = this.data;
            var dataset = prepareData(data.result.series, $("#choicesActiveThreadsOverTime"));
            var options = this.getOptions();
            prepareOptions(options, data);
            $.plot($("#flotActiveThreadsOverTime"), dataset, options);
            // setup overview
            $.plot($("#overviewActiveThreadsOverTime"), dataset, prepareOverviewOptions(options));
        }
};

// Active Threads Over Time
function refreshActiveThreadsOverTime(fixTimestamps) {
    var infos = activeThreadsOverTimeInfos;
    prepareSeries(infos.data);
    if(fixTimestamps) {
        fixTimeStamps(infos.data.result.series, 0);
    }
    if(isGraph($("#flotActiveThreadsOverTime"))) {
        infos.createGraph();
    }else{
        var choiceContainer = $("#choicesActiveThreadsOverTime");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotActiveThreadsOverTime", "#overviewActiveThreadsOverTime");
        $('#footerActiveThreadsOverTime .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
};

var timeVsThreadsInfos = {
        data: {"result": {"minY": 4.25, "minX": 1.0, "maxY": 18259.73856209151, "series": [{"data": [[51.0, 18259.73856209151]], "isOverall": false, "label": "signin", "isController": false}, {"data": [[51.0, 18259.73856209151]], "isOverall": false, "label": "signin-Aggregated", "isController": false}, {"data": [[2.0, 11.666666666666666], [3.0, 10.0], [4.0, 9.0], [5.0, 13.0], [6.0, 16.666666666666668], [7.0, 21.666666666666668], [8.0, 23.0], [9.0, 31.0], [10.0, 26.0], [11.0, 21.0], [12.0, 15.666666666666668], [13.0, 8.666666666666666], [14.0, 17.333333333333332], [15.0, 15.666666666666666], [16.0, 10.0], [17.0, 34.0], [18.0, 21.0], [19.0, 22.0], [20.0, 39.0], [21.0, 40.666666666666664], [22.0, 38.333333333333336], [23.0, 18.5], [24.0, 50.75], [25.0, 28.333333333333332], [26.0, 50.33333333333333], [27.0, 44.5], [28.0, 46.333333333333336], [29.0, 53.0], [30.0, 74.5], [31.0, 77.33333333333333], [33.0, 78.0], [32.0, 86.0], [35.0, 64.0], [34.0, 58.666666666666664], [37.0, 62.333333333333336], [36.0, 61.0], [39.0, 41.57142857142857], [38.0, 76.33333333333333], [41.0, 59.285714285714285], [40.0, 63.75], [43.0, 50.4], [42.0, 52.21739130434783], [45.0, 32.142857142857146], [44.0, 44.333333333333336], [47.0, 71.25], [46.0, 47.75], [49.0, 21.0], [48.0, 47.083333333333336], [51.0, 1060.466969591051], [50.0, 37.0], [1.0, 20.666666666666668]], "isOverall": false, "label": "get tests", "isController": false}, {"data": [[49.62516339869285, 994.2339869281034]], "isOverall": false, "label": "get tests-Aggregated", "isController": false}, {"data": [[33.0, 29.0], [34.0, 22.0], [37.0, 15.0], [36.0, 19.5], [39.0, 18.142857142857142], [41.0, 32.4], [40.0, 33.5], [42.0, 17.285714285714285], [43.0, 31.25], [45.0, 18.571428571428573], [47.0, 16.0], [49.0, 15.428571428571427], [48.0, 18.72222222222223], [51.0, 562.7700407608703], [50.0, 18.5], [13.0, 9.0], [18.0, 11.333333333333334], [19.0, 4.333333333333333], [20.0, 8.8], [21.0, 13.375], [22.0, 4.25], [23.0, 18.5], [25.0, 12.833333333333332], [26.0, 12.5], [27.0, 18.0], [30.0, 20.0], [31.0, 27.666666666666668]], "isOverall": false, "label": "get session user", "isController": false}, {"data": [[50.436274509803944, 542.1107843137265]], "isOverall": false, "label": "get session user-Aggregated", "isController": false}], "supportsControllersDiscrimination": true, "maxX": 51.0, "title": "Time VS Threads"}},
        getOptions: function() {
            return {
                series: {
                    lines: {
                        show: true
                    },
                    points: {
                        show: true
                    }
                },
                xaxis: {
                    axisLabel: "Number of active threads",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Average response times in ms",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20
                },
                legend: { noColumns: 2,show: true, container: '#legendTimeVsThreads' },
                selection: {
                    mode: 'xy'
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to work
                },
                tooltip: true,
                tooltipOpts: {
                    content: "%s: At %x.2 active threads, Average response time was %y.2 ms"
                }
            };
        },
        createGraph: function() {
            var data = this.data;
            var dataset = prepareData(data.result.series, $("#choicesTimeVsThreads"));
            var options = this.getOptions();
            prepareOptions(options, data);
            $.plot($("#flotTimesVsThreads"), dataset, options);
            // setup overview
            $.plot($("#overviewTimesVsThreads"), dataset, prepareOverviewOptions(options));
        }
};

// Time vs threads
function refreshTimeVsThreads(){
    var infos = timeVsThreadsInfos;
    prepareSeries(infos.data);
    if(isGraph($("#flotTimesVsThreads"))){
        infos.createGraph();
    }else{
        var choiceContainer = $("#choicesTimeVsThreads");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotTimesVsThreads", "#overviewTimesVsThreads");
        $('#footerTimeVsThreads .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
};

var bytesThroughputOverTimeInfos = {
        data : {"result": {"minY": 0.0, "minX": 1.51384242E12, "maxY": 22113.1, "series": [{"data": [[1.51384242E12, 0.0], [1.51384248E12, 0.0]], "isOverall": false, "label": "Bytes received per second", "isController": false}, {"data": [[1.51384242E12, 18480.133333333335], [1.51384248E12, 22113.1]], "isOverall": false, "label": "Bytes sent per second", "isController": false}], "supportsControllersDiscrimination": false, "granularity": 60000, "maxX": 1.51384248E12, "title": "Bytes Throughput Over Time"}},
        getOptions : function(){
            return {
                series: {
                    lines: {
                        show: true
                    },
                    points: {
                        show: true
                    }
                },
                xaxis: {
                    mode: "time",
                    timeformat: "%H:%M:%S",
                    axisLabel: getElapsedTimeLabel(this.data.result.granularity) ,
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Bytes/sec",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                legend: {
                    noColumns: 2,
                    show: true,
                    container: '#legendBytesThroughputOverTime'
                },
                selection: {
                    mode: "xy"
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to
                                    // work
                },
                tooltip: true,
                tooltipOpts: {
                    content: "%s at %x was %y"
                }
            };
        },
        createGraph : function() {
            var data = this.data;
            var dataset = prepareData(data.result.series, $("#choicesBytesThroughputOverTime"));
            var options = this.getOptions();
            prepareOptions(options, data);
            $.plot($("#flotBytesThroughputOverTime"), dataset, options);
            // setup overview
            $.plot($("#overviewBytesThroughputOverTime"), dataset, prepareOverviewOptions(options));
        }
};

// Bytes throughput Over Time
function refreshBytesThroughputOverTime(fixTimestamps) {
    var infos = bytesThroughputOverTimeInfos;
    prepareSeries(infos.data);
    if(fixTimestamps) {
        fixTimeStamps(infos.data.result.series, 0);
    }
    if(isGraph($("#flotBytesThroughputOverTime"))){
        infos.createGraph();
    }else{
        var choiceContainer = $("#choicesBytesThroughputOverTime");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotBytesThroughputOverTime", "#overviewBytesThroughputOverTime");
        $('#footerBytesThroughputOverTime .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
}

var responseTimesOverTimeInfos = {
        data: {"result": {"minY": 242.0589101620034, "minX": 1.51384242E12, "maxY": 26703.725490196077, "series": [{"data": [[1.51384242E12, 26703.725490196077], [1.51384248E12, 9815.751633986927]], "isOverall": false, "label": "signin", "isController": false}, {"data": [[1.51384242E12, 242.0589101620034], [1.51384248E12, 1594.3830787309057]], "isOverall": false, "label": "get tests", "isController": false}, {"data": [[1.51384242E12, 671.1159010600716], [1.51384248E12, 431.1428571428553]], "isOverall": false, "label": "get session user", "isController": false}], "supportsControllersDiscrimination": true, "granularity": 60000, "maxX": 1.51384248E12, "title": "Response Time Over Time"}},
        getOptions: function(){
            return {
                series: {
                    lines: {
                        show: true
                    },
                    points: {
                        show: true
                    }
                },
                xaxis: {
                    mode: "time",
                    timeformat: "%H:%M:%S",
                    axisLabel: getElapsedTimeLabel(this.data.result.granularity),
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Average response time in ms",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                legend: {
                    noColumns: 2,
                    show: true,
                    container: '#legendResponseTimesOverTime'
                },
                selection: {
                    mode: 'xy'
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to
                                    // work
                },
                tooltip: true,
                tooltipOpts: {
                    content: "%s : at %x Average response time was %y ms"
                }
            };
        },
        createGraph: function() {
            var data = this.data;
            var dataset = prepareData(data.result.series, $("#choicesResponseTimesOverTime"));
            var options = this.getOptions();
            prepareOptions(options, data);
            $.plot($("#flotResponseTimesOverTime"), dataset, options);
            // setup overview
            $.plot($("#overviewResponseTimesOverTime"), dataset, prepareOverviewOptions(options));
        }
};

// Response Times Over Time
function refreshResponseTimeOverTime(fixTimestamps) {
    var infos = responseTimesOverTimeInfos;
    prepareSeries(infos.data);
    if(fixTimestamps) {
        fixTimeStamps(infos.data.result.series, 0);
    }
    if(isGraph($("#flotResponseTimesOverTime"))){
        infos.createGraph();
    }else{
        var choiceContainer = $("#choicesResponseTimesOverTime");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotResponseTimesOverTime", "#overviewResponseTimesOverTime");
        $('#footerResponseTimesOverTime .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
};

var latenciesOverTimeInfos = {
        data: {"result": {"minY": 226.70839469808547, "minX": 1.51384242E12, "maxY": 19240.078431372556, "series": [{"data": [[1.51384242E12, 19240.078431372556], [1.51384248E12, 7424.013071895428]], "isOverall": false, "label": "signin", "isController": false}, {"data": [[1.51384242E12, 226.70839469808547], [1.51384248E12, 1451.7708578143347]], "isOverall": false, "label": "get tests", "isController": false}, {"data": [[1.51384242E12, 446.58657243816276], [1.51384248E12, 251.71489361702183]], "isOverall": false, "label": "get session user", "isController": false}], "supportsControllersDiscrimination": true, "granularity": 60000, "maxX": 1.51384248E12, "title": "Latencies Over Time"}},
        getOptions: function() {
            return {
                series: {
                    lines: {
                        show: true
                    },
                    points: {
                        show: true
                    }
                },
                xaxis: {
                    mode: "time",
                    timeformat: "%H:%M:%S",
                    axisLabel: getElapsedTimeLabel(this.data.result.granularity),
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Average Response latencies in ms",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                legend: {
                    noColumns: 2,
                    show: true,
                    container: '#legendLatenciesOverTime'
                },
                selection: {
                    mode: 'xy'
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to
                                    // work
                },
                tooltip: true,
                tooltipOpts: {
                    content: "%s : at %x Average latency was %y ms"
                }
            };
        },
        createGraph: function () {
            var data = this.data;
            var dataset = prepareData(data.result.series, $("#choicesLatenciesOverTime"));
            var options = this.getOptions();
            prepareOptions(options, data);
            $.plot($("#flotLatenciesOverTime"), dataset, options);
            // setup overview
            $.plot($("#overviewLatenciesOverTime"), dataset, prepareOverviewOptions(options));
        }
};

// Latencies Over Time
function refreshLatenciesOverTime(fixTimestamps) {
    var infos = latenciesOverTimeInfos;
    prepareSeries(infos.data);
    if(fixTimestamps) {
        fixTimeStamps(infos.data.result.series, 0);
    }
    if(isGraph($("#flotLatenciesOverTime"))) {
        infos.createGraph();
    }else {
        var choiceContainer = $("#choicesLatenciesOverTime");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotLatenciesOverTime", "#overviewLatenciesOverTime");
        $('#footerLatenciesOverTime .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
};

var responseTimeVsRequestInfos = {
    data: {"result": {"minY": 31.0, "minX": 2926.0, "maxY": 36.0, "series": [{"data": [[2926.0, 36.0], [3500.0, 31.0]], "isOverall": false, "label": "Successes", "isController": false}], "supportsControllersDiscrimination": false, "granularity": 60000, "maxX": 3500.0, "title": "Response Time Vs Request"}},
    getOptions: function() {
        return {
            series: {
                lines: {
                    show: false
                },
                points: {
                    show: true
                }
            },
            xaxis: {
                axisLabel: "Global number of requests per second",
                axisLabelUseCanvas: true,
                axisLabelFontSizePixels: 12,
                axisLabelFontFamily: 'Verdana, Arial',
                axisLabelPadding: 20,
            },
            yaxis: {
                axisLabel: "Median Response Time (ms)",
                axisLabelUseCanvas: true,
                axisLabelFontSizePixels: 12,
                axisLabelFontFamily: 'Verdana, Arial',
                axisLabelPadding: 20,
            },
            legend: {
                noColumns: 2,
                show: true,
                container: '#legendResponseTimeVsRequest'
            },
            selection: {
                mode: 'xy'
            },
            grid: {
                hoverable: true // IMPORTANT! this is needed for tooltip to work
            },
            tooltip: true,
            tooltipOpts: {
                content: "%s : Median response time at %x req/s was %y ms"
            }
        };
    },
    createGraph: function () {
        var data = this.data;
        var dataset = prepareData(data.result.series, $("#choicesResponseTimeVsRequest"));
        var options = this.getOptions();
        prepareOptions(options, data);
        $.plot($("#flotResponseTimeVsRequest"), dataset, options);
        // setup overview
        $.plot($("#overviewResponseTimeVsRequest"), dataset, prepareOverviewOptions(options));

    }
};

// Response Time vs Request
function refreshResponseTimeVsRequest() {
    var infos = responseTimeVsRequestInfos;
    prepareSeries(infos.data);
    if (isGraph($("#flotResponseTimeVsRequest"))){
        infos.create();
    }else{
        var choiceContainer = $("#choicesResponseTimeVsRequest");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotResponseTimeVsRequest", "#overviewResponseTimeVsRequest");
        $('#footerResponseRimeVsRequest .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
};


var latenciesVsRequestInfos = {
    data: {"result": {"minY": 26.0, "minX": 2926.0, "maxY": 30.0, "series": [{"data": [[2926.0, 30.0], [3500.0, 26.0]], "isOverall": false, "label": "Successes", "isController": false}], "supportsControllersDiscrimination": false, "granularity": 60000, "maxX": 3500.0, "title": "Latencies Vs Request"}},
    getOptions: function() {
        return{
            series: {
                lines: {
                    show: false
                },
                points: {
                    show: true
                }
            },
            xaxis: {
                axisLabel: "Global number of requests per second",
                axisLabelUseCanvas: true,
                axisLabelFontSizePixels: 12,
                axisLabelFontFamily: 'Verdana, Arial',
                axisLabelPadding: 20,
            },
            yaxis: {
                axisLabel: "Median Latency (ms)",
                axisLabelUseCanvas: true,
                axisLabelFontSizePixels: 12,
                axisLabelFontFamily: 'Verdana, Arial',
                axisLabelPadding: 20,
            },
            legend: { noColumns: 2,show: true, container: '#legendLatencyVsRequest' },
            selection: {
                mode: 'xy'
            },
            grid: {
                hoverable: true // IMPORTANT! this is needed for tooltip to work
            },
            tooltip: true,
            tooltipOpts: {
                content: "%s : Median response time at %x req/s was %y ms"
            }
        };
    },
    createGraph: function () {
        var data = this.data;
        var dataset = prepareData(data.result.series, $("#choicesLatencyVsRequest"));
        var options = this.getOptions();
        prepareOptions(options, data);
        $.plot($("#flotLatenciesVsRequest"), dataset, options);
        // setup overview
        $.plot($("#overviewLatenciesVsRequest"), dataset, prepareOverviewOptions(options));
    }
};

// Latencies vs Request
function refreshLatenciesVsRequest() {
        var infos = latenciesVsRequestInfos;
        prepareSeries(infos.data);
        if(isGraph($("#flotLatenciesVsRequest"))){
            infos.createGraph();
        }else{
            var choiceContainer = $("#choicesLatencyVsRequest");
            createLegend(choiceContainer, infos);
            infos.createGraph();
            setGraphZoomable("#flotLatenciesVsRequest", "#overviewLatenciesVsRequest");
            $('#footerLatenciesVsRequest .legendColorBox > div').each(function(i){
                $(this).clone().prependTo(choiceContainer.find("li").eq(i));
            });
        }
};

var hitsPerSecondInfos = {
        data: {"result": {"minY": 48.95, "minX": 1.51384242E12, "maxY": 58.15, "series": [{"data": [[1.51384242E12, 48.95], [1.51384248E12, 58.15]], "isOverall": false, "label": "hitsPerSecond", "isController": false}], "supportsControllersDiscrimination": false, "granularity": 60000, "maxX": 1.51384248E12, "title": "Hits Per Second"}},
        getOptions: function() {
            return {
                series: {
                    lines: {
                        show: true
                    },
                    points: {
                        show: true
                    }
                },
                xaxis: {
                    mode: "time",
                    timeformat: "%H:%M:%S",
                    axisLabel: getElapsedTimeLabel(this.data.result.granularity),
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Number of hits / sec",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20
                },
                legend: {
                    noColumns: 2,
                    show: true,
                    container: "#legendHitsPerSecond"
                },
                selection: {
                    mode : 'xy'
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to
                                    // work
                },
                tooltip: true,
                tooltipOpts: {
                    content: "%s at %x was %y.2 hits/sec"
                }
            };
        },
        createGraph: function createGraph() {
            var data = this.data;
            var dataset = prepareData(data.result.series, $("#choicesHitsPerSecond"));
            var options = this.getOptions();
            prepareOptions(options, data);
            $.plot($("#flotHitsPerSecond"), dataset, options);
            // setup overview
            $.plot($("#overviewHitsPerSecond"), dataset, prepareOverviewOptions(options));
        }
};

// Hits per second
function refreshHitsPerSecond(fixTimestamps) {
    var infos = hitsPerSecondInfos;
    prepareSeries(infos.data);
    if(fixTimestamps) {
        fixTimeStamps(infos.data.result.series, 0);
    }
    if (isGraph($("#flotHitsPerSecond"))){
        infos.createGraph();
    }else{
        var choiceContainer = $("#choicesHitsPerSecond");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotHitsPerSecond", "#overviewHitsPerSecond");
        $('#footerHitsPerSecond .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
}

var codesPerSecondInfos = {
        data: {"result": {"minY": 48.766666666666666, "minX": 1.51384242E12, "maxY": 58.333333333333336, "series": [{"data": [[1.51384242E12, 48.766666666666666], [1.51384248E12, 58.333333333333336]], "isOverall": false, "label": "200", "isController": false}], "supportsControllersDiscrimination": false, "granularity": 60000, "maxX": 1.51384248E12, "title": "Codes Per Second"}},
        getOptions: function(){
            return {
                series: {
                    lines: {
                        show: true
                    },
                    points: {
                        show: true
                    }
                },
                xaxis: {
                    mode: "time",
                    timeformat: "%H:%M:%S",
                    axisLabel: getElapsedTimeLabel(this.data.result.granularity),
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Number of responses/sec",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                legend: {
                    noColumns: 2,
                    show: true,
                    container: "#legendCodesPerSecond"
                },
                selection: {
                    mode: 'xy'
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to
                                    // work
                },
                tooltip: true,
                tooltipOpts: {
                    content: "Number of Response Codes %s at %x was %y.2 responses / sec"
                }
            };
        },
    createGraph: function() {
        var data = this.data;
        var dataset = prepareData(data.result.series, $("#choicesCodesPerSecond"));
        var options = this.getOptions();
        prepareOptions(options, data);
        $.plot($("#flotCodesPerSecond"), dataset, options);
        // setup overview
        $.plot($("#overviewCodesPerSecond"), dataset, prepareOverviewOptions(options));
    }
};

// Codes per second
function refreshCodesPerSecond(fixTimestamps) {
    var infos = codesPerSecondInfos;
    prepareSeries(infos.data);
    if(fixTimestamps) {
        fixTimeStamps(infos.data.result.series, 0);
    }
    if(isGraph($("#flotCodesPerSecond"))){
        infos.createGraph();
    }else{
        var choiceContainer = $("#choicesCodesPerSecond");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotCodesPerSecond", "#overviewCodesPerSecond");
        $('#footerCodesPerSecond .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
};

var transactionsPerSecondInfos = {
        data: {"result": {"minY": 2.55, "minX": 1.51384242E12, "maxY": 28.366666666666667, "series": [{"data": [[1.51384242E12, 2.55], [1.51384248E12, 2.55]], "isOverall": false, "label": "signin-success", "isController": false}, {"data": [[1.51384242E12, 22.633333333333333], [1.51384248E12, 28.366666666666667]], "isOverall": false, "label": "get tests-success", "isController": false}, {"data": [[1.51384242E12, 23.583333333333332], [1.51384248E12, 27.416666666666668]], "isOverall": false, "label": "get session user-success", "isController": false}], "supportsControllersDiscrimination": true, "granularity": 60000, "maxX": 1.51384248E12, "title": "Transactions Per Second"}},
        getOptions: function(){
            return {
                series: {
                    lines: {
                        show: true
                    },
                    points: {
                        show: true
                    }
                },
                xaxis: {
                    mode: "time",
                    timeformat: "%H:%M:%S",
                    axisLabel: getElapsedTimeLabel(this.data.result.granularity),
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20,
                },
                yaxis: {
                    axisLabel: "Number of transactions / sec",
                    axisLabelUseCanvas: true,
                    axisLabelFontSizePixels: 12,
                    axisLabelFontFamily: 'Verdana, Arial',
                    axisLabelPadding: 20
                },
                legend: {
                    noColumns: 2,
                    show: true,
                    container: "#legendTransactionsPerSecond"
                },
                selection: {
                    mode: 'xy'
                },
                grid: {
                    hoverable: true // IMPORTANT! this is needed for tooltip to
                                    // work
                },
                tooltip: true,
                tooltipOpts: {
                    content: "%s at %x was %y transactions / sec"
                }
            };
        },
    createGraph: function () {
        var data = this.data;
        var dataset = prepareData(data.result.series, $("#choicesTransactionsPerSecond"));
        var options = this.getOptions();
        prepareOptions(options, data);
        $.plot($("#flotTransactionsPerSecond"), dataset, options);
        // setup overview
        $.plot($("#overviewTransactionsPerSecond"), dataset, prepareOverviewOptions(options));
    }
};

// Transactions per second
function refreshTransactionsPerSecond(fixTimestamps) {
    var infos = transactionsPerSecondInfos;
    prepareSeries(infos.data);
    if(fixTimestamps) {
        fixTimeStamps(infos.data.result.series, 0);
    }
    if(isGraph($("#flotTransactionsPerSecond"))){
        infos.createGraph();
    }else{
        var choiceContainer = $("#choicesTransactionsPerSecond");
        createLegend(choiceContainer, infos);
        infos.createGraph();
        setGraphZoomable("#flotTransactionsPerSecond", "#overviewTransactionsPerSecond");
        $('#footerTransactionsPerSecond .legendColorBox > div').each(function(i){
            $(this).clone().prependTo(choiceContainer.find("li").eq(i));
        });
    }
};

// Collapse the graph matching the specified DOM element depending the collapsed
// status
function collapse(elem, collapsed){
    if(collapsed){
        $(elem).parent().find(".fa-chevron-up").removeClass("fa-chevron-up").addClass("fa-chevron-down");
    } else {
        $(elem).parent().find(".fa-chevron-down").removeClass("fa-chevron-down").addClass("fa-chevron-up");
        if (elem.id == "bodyBytesThroughputOverTime") {
            if (isGraph($(elem).find('.flot-chart-content')) == false) {
                refreshBytesThroughputOverTime(true);
            }
            document.location.href="#responseTimesOverTime";
        } else if (elem.id == "bodyLantenciesOverTime") {
            if (isGraph($(elem).find('.flot-chart-content')) == false) {
                refreshLatenciesOverTime(true);
            }
            document.location.href="#latenciesOverTime";
        } else if (elem.id == "bodyResponseTimeDistribution") {
            if (isGraph($(elem).find('.flot-chart-content')) == false) {
                refreshResponseTimeDistribution();
            }
            document.location.href="#responseTimeDistribution" ;
        } else if (elem.id == "bodyActiveThreadsOverTime") {
            if (isGraph($(elem).find('.flot-chart-content')) == false) {
                refreshActiveThreadsOverTime(true);
            }
            document.location.href="#activeThreadsOverTime";
        } else if (elem.id == "bodyTimeVsThreads") {
            if (isGraph($(elem).find('.flot-chart-content')) == false) {
                refreshTimeVsThreads();
            }
            document.location.href="#timeVsThreads" ;
        } else if (elem.id == "bodyCodesPerSecond") {
            if (isGraph($(elem).find('.flot-chart-content')) == false) {
                refreshCodesPerSecond(true);
            }
            document.location.href="#codesPerSecond";
        } else if (elem.id == "bodyTransactionsPerSecond") {
            if (isGraph($(elem).find('.flot-chart-content')) == false) {
                refreshTransactionsPerSecond(true);
            }
            document.location.href="#transactionsPerSecond";
        } else if (elem.id == "bodyResponseTimeVsRequest") {
            if (isGraph($(elem).find('.flot-chart-content')) == false) {
                refreshResponseTimeVsRequest();
            }
            document.location.href="#responseTimeVsRequest";
        } else if (elem.id == "bodyLatenciesVsRequest") {
            if (isGraph($(elem).find('.flot-chart-content')) == false) {
                refreshLatenciesVsRequest();
            }
            document.location.href="#latencyVsRequest";
        }
    }
}

// Collapse
$(function() {
        $('.collapse').on('shown.bs.collapse', function(){
            collapse(this, false);
        }).on('hidden.bs.collapse', function(){
            collapse(this, true);
        });
});

$(function() {
    $(".glyphicon").mousedown( function(event){
        var tmp = $('.in:not(ul)');
        tmp.parent().parent().parent().find(".fa-chevron-up").removeClass("fa-chevron-down").addClass("fa-chevron-down");
        tmp.removeClass("in");
        tmp.addClass("out");
    });
});

/*
 * Activates or deactivates all series of the specified graph (represented by id parameter)
 * depending on checked argument.
 */
function toggleAll(id, checked){
    var placeholder = document.getElementById(id);

    var cases = $(placeholder).find(':checkbox');
    cases.prop('checked', checked);
    $(cases).parent().children().children().toggleClass("legend-disabled", !checked);

    var choiceContainer;
    if ( id == "choicesBytesThroughputOverTime"){
        choiceContainer = $("#choicesBytesThroughputOverTime");
        refreshBytesThroughputOverTime(false);
    } else if(id == "choicesResponseTimesOverTime"){
        choiceContainer = $("#choicesResponseTimesOverTime");
        refreshResponseTimeOverTime(false);
    } else if ( id == "choicesLatenciesOverTime"){
        choiceContainer = $("#choicesLatenciesOverTime");
        refreshLatenciesOverTime(false);
    } else if ( id == "choicesResponseTimePercentiles"){
        choiceContainer = $("#choicesResponseTimePercentiles");
        refreshResponseTimePercentiles();
    } else if(id == "choicesActiveThreadsOverTime"){
        choiceContainer = $("#choicesActiveThreadsOverTime");
        refreshActiveThreadsOverTime(false);
    } else if ( id == "choicesTimeVsThreads"){
        choiceContainer = $("#choicesTimeVsThreads");
        refreshTimeVsThreads();
    } else if ( id == "choicesResponseTimeDistribution"){
        choiceContainer = $("#choicesResponseTimeDistribution");
        refreshResponseTimeDistribution();
    } else if ( id == "choicesHitsPerSecond"){
        choiceContainer = $("#choicesHitsPerSecond");
        refreshHitsPerSecond(false);
    } else if(id == "choicesCodesPerSecond"){
        choiceContainer = $("#choicesCodesPerSecond");
        refreshCodesPerSecond(false);
    } else if ( id == "choicesTransactionsPerSecond"){
        choiceContainer = $("#choicesTransactionsPerSecond");
        refreshTransactionsPerSecond(false);
    } else if ( id == "choicesResponseTimeVsRequest"){
        choiceContainer = $("#choicesResponseTimeVsRequest");
        refreshResponseTimeVsRequest();
    } else if ( id == "choicesLatencyVsRequest"){
        choiceContainer = $("#choicesLatencyVsRequest");
        refreshLatenciesVsRequest();
    }
    var color = checked ? "black" : "#818181";
    choiceContainer.find("label").each(function(){
        this.style.color = color;
    });
}

// Unchecks all boxes for "Hide all samples" functionality
function uncheckAll(id){
    toggleAll(id, false);
}

// Checks all boxes for "Show all samples" functionality
function checkAll(id){
    toggleAll(id, true);
}

// Prepares data to be consumed by plot plugins
function prepareData(series, choiceContainer, customizeSeries){
    var datasets = [];

    // Add only selected series to the data set
    choiceContainer.find("input:checked").each(function (index, item) {
        var key = $(item).attr("name");
        var i = 0;
        var size = series.length;
        while(i < size && series[i].label != key)
            i++;
        if(i < size){
            var currentSeries = series[i];
            datasets.push(currentSeries);
            if(customizeSeries)
                customizeSeries(currentSeries);
        }
    });
    return datasets;
}

// create slider
$(function() {
    $( "#slider-vertical" ).slider({
      orientation: "vertical",
      range: "min",
      min: responseTimePercentilesInfos.data.result.minY,
      max: responseTimePercentilesInfos.data.result.maxY,
      value: 0,
      stop: function(event, ui ) {
       percentileThreshold= ui.value;
       refreshResponseTimePercentiles();
       $("#amount").val(percentileThreshold);
      }
    });
    $("#amount" ).val( $( "#slider-vertical" ).slider( "value" ) );
    $("#slider-vertical").children("div").css("background-color","purple");
    $("#amount" ).css("color", $("#slider-vertical").children("div").css("background-color"));
    $("#slider-vertical").children("div").css("opacity","0.3");
});

/*
 * Ignore case comparator
 */
function sortAlphaCaseless(a,b){
    return a.toLowerCase() > b.toLowerCase() ? 1 : -1;
};

/*
 * Creates a legend in the specified element with graph information
 */
function createLegend(choiceContainer, infos) {
    // Sort series by name
    var keys = [];
    $.each(infos.data.result.series, function(index, series){
        keys.push(series.label);
    });
    keys.sort(sortAlphaCaseless);

    // Create list of series with support of activation/deactivation
    $.each(keys, function(index, key) {
        var id = choiceContainer.attr('id') + index;
        $('<li />')
            .append($('<input id="' + id + '" name="' + key + '" type="checkbox" checked="checked" hidden />'))
            .append($('<label />', { 'text': key , 'for': id }))
            .appendTo(choiceContainer);
    });
    choiceContainer.find("label").click( function(){
        if (this.style.color !== "rgb(129, 129, 129)" ){
            this.style.color="#818181";
        }else {
            this.style.color="black";
        }
        $(this).parent().children().children().toggleClass("legend-disabled");
    });
    choiceContainer.find("label").mousedown( function(event){
        event.preventDefault();
    });
    choiceContainer.find("label").mouseenter(function(){
        this.style.cursor="pointer";
    });

    // Recreate graphe on series activation toggle
    choiceContainer.find("input").click(function(){
        infos.createGraph();
    });
}
